在回答之前,请注意这是客户端问题,而不是服务器问题。由于我在终端使用 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];
PS我是不是做错了什么。这不可能是防火墙问题,因为 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);