我有以下代码:
while (true)
{
lengthInput = instr.readByte();
// Other code
}
问题是我使用客户端向套接字发送信息,但在完成后我得到了EOF Exception并且它破坏了线程,我需要的是管理这个并且不要停止线程,因为我需要发送更多信息并能够阅读。
提前感谢您的帮助。
答案 0 :(得分:-1)
我猜这个问题与你的套接字初始化有关。您可能需要检查您的客户端套接字是否确实成功创建了套接字并绑定到指定的端口。您还可以检查您的客户端是否真的将数据发送到流出并刷新到服务器端。我有一个带有套接字通信的Android模拟器上的小项目。我的客户端和服务都扩展自Java Thread类。也许你可以在下面看到我的代码。
try {
socket = new Socket(InetAddress.getByAddress(new byte[]{10, 0, 2, 2}),
Integer.parseInt(remote_port));//note we must keep the addr#10.0.2.2
// write out
out = new ObjectOutputStream(socket.getOutputStream());
out.writeObject(out_msg);
out.flush();
// read in
in = new ObjectInputStream(socket.getInputStream());
socket.setSoTimeout(1000);
in_msg.set_message((Message)in.readObject());
// close all
out.close();
in.close();
socket.close();
return true;
}catch(InterruptedIOException E){}
while (true) {
try {
// read in message
Socket ClientSocket = serverSocket.accept();
Message out_msg = new Message();
// read in message
ObjectInputStream in = new ObjectInputStream(ClientSocket.getInputStream());
Message in_msg = (Message) in.readObject();
//Log.d(TAG, "recv" + " content:" + in_msg.msg2Str());
message_process(in_msg, out_msg);
// write out message
ObjectOutputStream out = new ObjectOutputStream(ClientSocket.getOutputStream());
out.writeObject(out_msg);
out.flush();
} catch(Exception E){}
}