使用套接字的线程中的EOF异常

时间:2014-07-14 16:01:09

标签: java multithreading sockets eofexception

我有以下代码:

while (true) 
{
lengthInput = instr.readByte();
// Other code
}

问题是我使用客户端向套接字发送信息,但在完成后我得到了EOF Exception并且它破坏了线程,我需要的是管理这个并且不要停止线程,因为我需要发送更多信息并能够阅读。

提前感谢您的帮助。

1 个答案:

答案 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){}
}