2012-04-13 43 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()?