我有以下代码抛出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。所以,当然我有错误的代码,但我不知道是什么。
感谢您的帮助。
答案 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));
}