-1

我有下面的代码抛出 SocketTimeoutException。

Socket socket = new Socket(localhost, 9978);
socket.setSoTimeout(10000);
OutputStream oStream= socket.getOutputStream();
byte[] data = new byte[] {'h', 'e', 'l', 'l', 'o'};
oStream.write(data);
oStream.flush();
DataInputStream iStream = new DataInputStream(socket.getInputStream());
final byte[] received = new byte[data.length];
data.readFully(received);

在 readFully 中,我得到了 SocketTimeoutException。所以,当然我有错误的代码,但我不确定是什么。

谢谢您的帮助。

4

2 回答 2

1

您不一定有“错误代码”;也许您的网络连接速度较慢,或者您正在与速度较慢的服务器通话。尝试更长的超时时间。或者,服务器可能没有向您发送五个字节作为回复。

于 2013-12-18T00:36:41.377 回答
0

你怎么知道服务器向你发送了 5 个字节作为回报?

也许尝试使用普通读取,看看会发生什么。

即使是非常慢的服务器/网络也应该能够在 10 秒内完成 5 个字节。

试试这个代码

for (int x = 0; x < 5; x++) {
  byte[] received = new byte[1];
  data.readFully(received);
  System.out.println (new String (received));
}
于 2013-12-18T00:41:21.117 回答