Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用套接字的线程中的EOF异常_Java_Multithreading_Sockets_Eofexception - Fatal编程技术网

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

Java 使用套接字的线程中的EOF异常,java,multithreading,sockets,eofexception,Java,Multithreading,Sockets,Eofexception,我的代码如下: while (true) { lengthInput = instr.readByte(); // Other code } 问题是,我正在使用一个客户端向套接字发送信息,但在它完成后,我得到了EOF异常,它断开了线程,我需要的是管理它,不要停止线程,因为我需要发送更多信息并能够读取它 提前感谢您的帮助。我想问题与套接字初始化有关。您可能需要检查您的客户端套接字是否确实成功地创建了套接字并绑定到指定的端口。您还可以检查您的客户端是否真的将数据发送到扩展流并刷新到服务器端。我有

我的代码如下:

while (true) 
{
lengthInput = instr.readByte();
// Other code
}
问题是,我正在使用一个客户端向套接字发送信息,但在它完成后,我得到了EOF异常,它断开了线程,我需要的是管理它,不要停止线程,因为我需要发送更多信息并能够读取它


提前感谢您的帮助。

我想问题与套接字初始化有关。您可能需要检查您的客户端套接字是否确实成功地创建了套接字并绑定到指定的端口。您还可以检查您的客户端是否真的将数据发送到扩展流并刷新到服务器端。我有一个关于Android模拟器和套接字通信的小项目。我的客户机和服务器都是从Java线程类扩展而来的。也许你可以在下面看到我的代码

客户端 服务器端
EOF表示客户端或服务器关闭了套接字。你能检查一下客户端写入数据后会发生什么吗?服务器读取数据后会发生什么?在获取EOFException后,在客户端我获取ConnectionException:连接被拒绝,在服务器上线程停止(生产者),我使用生产者消费者model@ArkadyEOFEException表示对等方关闭了连接,或者关闭它进行输出。@OP发布发送代码。如果套接字连接不正确,他将得到另一个异常,或者根本没有套接字。如果是冲水的问题,他就会堵住。他没有使用序列化。您不需要三次关闭,并且您的服务器没有任何连接,因此它会泄漏连接,这里没有任何东西可以回答问题,甚至无法解决问题。
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){}
}