2012-04-13 58 views
0

在回答之前,請注意,這是一個客戶端的問題,而不是一個服務器的問題。由於我在終端中使用telnet連接到服務器,並且telnet能夠連接到服務器。現在,我不知道爲什麼連接方法無法連接我同時使用本地主機地址和服務器的私有IP地址。它只是阻止,它從不調用回調方法。Java Socket技術方法塊當「連接」被稱爲

   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我做錯了什麼。它不可能是防火牆的問題,因爲遠程登錄能夠連接到服務器,我想我沒有防火牆,因爲我在我的Ubuntu的機器運行此代碼。服務器和客戶端都使用TCP協議,並且在客戶端和服務器端都不會拋出異常。任何可能出錯的建議都可能非常有用。我可以顯示更多的代碼,如服務器代碼。服務器用C++編寫,客戶端用Java編寫。

編輯:

我終於能夠建立連接。而不是使用connect方法,我使用套接字的構造函數interaly調用connect。我不知道爲什麼連接不起作用?

下面是代碼修改:

  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

建議:獲得的Wireshark的副本,並跟蹤發生的事情在3次握手:http://www.wireshark.org – paulsm4 2012-04-13 22:04:08

+0

什麼是'callback'? – biziclop 2012-04-13 22:22:42

回答

0

我終於能夠建立連接。而不是使用connect方法,我使用套接字的構造函數interaly調用connect。我不知道爲什麼連接不起作用?

下面是修改代碼:

 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

你有沒有打過電話連接之前上的地址檢查isUnresolved()?