2012-04-13 15 views
0

Bevor Sie antworten, beachten Sie bitte, dass dies ein Client-Problem und kein Serverproblem ist. Da ich telnet im Terminal verwendet habe, um eine Verbindung zum Server herzustellen, konnte Telnet eine Verbindung zum Server herstellen. Nun, ich weiß nicht, warum die connect-Methode keine Verbindung herstellen kann Ich habe sowohl die localhost-Adresse als auch die private IP-Adresse des Servers verwendet. Es blockiert nur und ruft nie die Callback-Methode auf.Java-Socket-Methodenblöcke Wenn 'connect' aufgerufen wird

   client.connect(new InetSocketAddress(hostname, 1993)); 
       callback.onConnection(); // Never invokes! 
       OutputStream writer = client.getOutputStream(); 
       InputStream reader = client.getInputStream(); 
       byte[] buffer = new byte[1024 * 1024]; 

P. S mache ich etwas falsch. Es kann kein Firewall-Problem sein, da Telnet eine Verbindung mit dem Server herstellen konnte und ich denke, dass ich keine Firewall habe, da ich diesen Code auf meinem Ubuntu-Rechner ausführe. Sowohl der Server als auch der Client verwenden das TCP-Protokoll und keine Ausnahme wird weder auf der Client- noch auf der Serverseite ausgelöst. Jeder Vorschlag, was falsch sein könnte, kann sehr nützlich sein. Ich kann mehr Code wie der Servercode zeigen. Der Server ist in C++ geschrieben und der Client ist in Java geschrieben.

Edit:

ich endlich in der Lage war, eine Verbindung herzustellen. Anstatt die connect-Methode zu verwenden, verwende ich inter- net connect, indem ich den Konstruktor des Sockets verwende. Ich weiß nicht, warum connect nicht funktioniert? Hier

ist die Code Änderung:

  client = new Socket(hostname, port); 
      callback.onConnection(); 
      OutputStream writer = client.getOutputStream(); 
      InputStream reader = client.getInputStream(); 
      byte[] buffer = new byte[1024 * 1024]; 
      reader.read(buffer); 
+0

Vorschlag: eine Kopie von Wireshark erhalten und verfolgt, was in dem 3-Wege-Handshake geschieht: http://www.wireshark.org – paulsm4

+0

Was ist 'callback'? – biziclop

Antwort

0

Endlich konnte ich eine Verbindung herstellen. Anstatt die connect-Methode zu verwenden, verwende ich inter- net connect, indem ich den Konstruktor des Sockets verwende. Ich weiß nicht, warum connect nicht funktioniert? Hier

ist die Code Änderung:

 client = new Socket(hostname, port); 
     callback.onConnection(); 
     OutputStream writer = client.getOutputStream(); 
     InputStream reader = client.getInputStream(); 
     byte[] buffer = new byte[1024 * 1024]; 
     reader.read(buffer); 
1

zu erstellen. Haben Sie versucht, isUnsolved() auf die Adresse vor dem Aufruf von connect zu überprüfen?

Verwandte Themen