readFully时出现SocketTimeoutException

时间:2013-12-18 00:28:36

标签: java socketexception socket-timeout-exception

我有以下代码抛出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。所以,当然我有错误的代码,但我不知道是什么。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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));
}