J
JackJackson_12
Gast
Hallo Forumgemeinde!
folgendes Problem beschäftigt mich seit Tagen:
Programmbeschreibung:
Der unten angefügte Code stellt eine ganz simple Client-Server Anwendung
dar, bei welcher der Client einen String an den Server sendet.
Problembeschreibung:
Lokal (über „localhost“ und im LAN) funktioniert alles wie erwartet. Der
Server wartet am deklarierten Port und nimmt den String des Clients
entgegen.
Sofern ich den Aufruf über das Internet ausführen will (die notwendigen
Vorkehrungen: „dyndns“, Portweiterleitung) habe ich getroffen, führt das am
Client nach einiger Zeit zu folgender „Exception“:
Bei meinen ausführlichen Problembehebungsversuchen habe ich folgendes
unternommen (hoffentlich vollständig):
• Alle Firewalls deaktiviert (Windows und am Router)
• Die Serverrolle an diverse andere virtuelle und physikalische Rechner
übertragen
• Versuche mit diversen anderen Ports
• Überprüfung der IP-Adressen (insbesondere ob bei „dyndns“ die
richtige Adresse hinterlegt ist)
• telnet führt ebenfalls zu einem Timeout (lokal funktioniert es)
• Netzwerkverkehr mittels wireshark abgehört (mit dem Ergebnis, dass keine Antworten für die TCP Anfragen reinkommen)
wahrscheinlich habe ich noch etliches mehr überprüft, aber das ist alles
was mir gerade einfällt.
Anmerkungen:
• Im selben Netz betreibe ich einen Webserver, der ist ohne Probleme
auch von „außen“ erreichbar!
• Meine Rechner hängen hinter zwei Routern (das ist so weil es hier
nicht anders geht) der erste Router leitet alles an den zweiten
Router weiter und dieser leitet dann an die entsprechenden Rechner
weiter. (funktioniert seit langem einwandfrei – ftp-Server, Webserver
etc.)
• Auch mit der Erreichbarkeit eines RMI-Servers und der Erreichbarkeit
einer JMS-Queue von extern habe ich Schwierigkeiten (deshalb der
Versuch mit dieser simplen Anwendung)
• Auf folgenden Betriebssystemen habe ich den Server am Laufen gehabt:
Windows 7, Windows XP und Linux Ubuntu
Hat jemand eine Idee woran das Problem liegen könnte?
vielen Dank schon mal für die Mühe!
Vg Jack
folgendes Problem beschäftigt mich seit Tagen:
Programmbeschreibung:
Der unten angefügte Code stellt eine ganz simple Client-Server Anwendung
dar, bei welcher der Client einen String an den Server sendet.
Problembeschreibung:
Lokal (über „localhost“ und im LAN) funktioniert alles wie erwartet. Der
Server wartet am deklarierten Port und nimmt den String des Clients
entgegen.
Sofern ich den Aufruf über das Internet ausführen will (die notwendigen
Vorkehrungen: „dyndns“, Portweiterleitung) habe ich getroffen, führt das am
Client nach einiger Zeit zu folgender „Exception“:
Java:
java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at
java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
Bei meinen ausführlichen Problembehebungsversuchen habe ich folgendes
unternommen (hoffentlich vollständig):
• Alle Firewalls deaktiviert (Windows und am Router)
• Die Serverrolle an diverse andere virtuelle und physikalische Rechner
übertragen
• Versuche mit diversen anderen Ports
• Überprüfung der IP-Adressen (insbesondere ob bei „dyndns“ die
richtige Adresse hinterlegt ist)
• telnet führt ebenfalls zu einem Timeout (lokal funktioniert es)
• Netzwerkverkehr mittels wireshark abgehört (mit dem Ergebnis, dass keine Antworten für die TCP Anfragen reinkommen)
wahrscheinlich habe ich noch etliches mehr überprüft, aber das ist alles
was mir gerade einfällt.
Anmerkungen:
• Im selben Netz betreibe ich einen Webserver, der ist ohne Probleme
auch von „außen“ erreichbar!
• Meine Rechner hängen hinter zwei Routern (das ist so weil es hier
nicht anders geht) der erste Router leitet alles an den zweiten
Router weiter und dieser leitet dann an die entsprechenden Rechner
weiter. (funktioniert seit langem einwandfrei – ftp-Server, Webserver
etc.)
• Auch mit der Erreichbarkeit eines RMI-Servers und der Erreichbarkeit
einer JMS-Queue von extern habe ich Schwierigkeiten (deshalb der
Versuch mit dieser simplen Anwendung)
• Auf folgenden Betriebssystemen habe ich den Server am Laufen gehabt:
Windows 7, Windows XP und Linux Ubuntu
Hat jemand eine Idee woran das Problem liegen könnte?
Java:
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
String str = JOptionPane.showInputDialog("Bitte " +
"kurzen Text eingeben");
try {
Socket socket = new Socket();
socket.connect(new InetSocketAddress("<meine Adr.>"
, 20100));
System.out.println(socket.getPort());
OutputStream outStream = socket.getOutputStream();
BufferedWriter bw = new BufferedWriter(new
OutputStreamWriter(outStream));
bw.write(str);
bw.flush();
outStream.close();
bw.close();
socket.close();
JOptionPane.showMessageDialog(null,
"Übermittlung hat funktioniert!");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
JOptionPane.showMessageDialog(null,
"Übermittlung hat NICHT funktioniert!");
}
}
}
Java:
public class Server {
private static ServerSocket s;
public static void main(String[] args) {
try {
s = new ServerSocket();
s.bind(new InetSocketAddress(20100));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while(true) {
try {
Socket client = s.accept();
InputStream clientIn = client.getInputStream();
BufferedReader bufClientIn =
new BufferedReader(new
InputStreamReader(clientIn));
String lineFromClient = bufClientIn.readLine();
System.out.println("FROMCLIENT: "
+ lineFromClient);
JOptionPane.showMessageDialog(null,
"FROMCLIENT: " + lineFromClient);
clientIn.close();
bufClientIn.close();
client.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
vielen Dank schon mal für die Mühe!
Vg Jack