我有以下代码:
while (true)
{
lengthInput = instr.readByte();
// Other code
}
问题是我正在使用客户端向套接字发送信息,但是在它完成后我得到了 EOF 异常并且它破坏了线程,我需要管理这个并且不要停止线程,因为我需要发送更多信息并能够阅读。
在此先感谢您的帮助。
我有以下代码:
while (true)
{
lengthInput = instr.readByte();
// Other code
}
问题是我正在使用客户端向套接字发送信息,但是在它完成后我得到了 EOF 异常并且它破坏了线程,我需要管理这个并且不要停止线程,因为我需要发送更多信息并能够阅读。
在此先感谢您的帮助。
我猜这个问题与你的套接字初始化有关。您可能需要检查您的客户端套接字是否确实成功创建了套接字并绑定到指定端口。您还可以检查您的客户端是否确实将数据发送到外流并刷新到服务器端。我有一个关于带有套接字通信的 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){}
}