【发布时间】:2012-04-14 06:19:54
【问题描述】:
在回答之前,请注意这是客户端问题,而不是服务器问题。由于我在终端使用 telnet 连接到服务器,并且 telnet 能够连接到服务器。现在,我不知道为什么connect方法无法连接我同时使用了本地主机地址和服务器的私有IP地址。它只是阻塞,从不调用回调方法。
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 我是不是做错了什么。这不可能是防火墙问题,因为 telnet 能够连接到服务器,而且我认为我没有防火墙,因为我在我的 Ubuntu 机器上运行此代码。服务器和客户端都使用 TCP 协议,客户端和服务器端都没有抛出异常。任何关于可能出错的建议都非常有用。我可以显示更多代码,例如服务器代码。服务端用 C++ 编写,客户端用 Java 编写。
编辑:
我终于能够建立连接。我没有使用连接方法,而是使用套接字的构造函数来调用连接。我不知道为什么连接不起作用?
代码修改如下:
client = new Socket(hostname, port);
callback.onConnection();
OutputStream writer = client.getOutputStream();
InputStream reader = client.getInputStream();
byte[] buffer = new byte[1024 * 1024];
reader.read(buffer);
【问题讨论】:
-
建议:获取 Wireshark 的副本并跟踪 3 次握手中发生的情况:wireshark.org