客户端突然断开连接后,如何使服务器套接字保持活动状态?

script_before_java

一旦客户端断开连接并重新启动客户端,服务器就会给出读取行超时。当我再次运行服务器时,它运行正常。因此,一次断开连接后,我会读取行超时异常,而下一次它将正常工作。

import java.io.*;

public class TcpServer {

    ServerSocket welcomeSocket;

    public TcpServer() throws IOException{

        createSocket(port);
    }

    public TcpServer(int port) throws IOException{

        createSocket(port);
    }

    private void createSocket(int port) throws IOException{

        welcomeSocket = new ServerSocket(port);

    }

    @Override
    public void listen() throws IOException{

        boolean exitServer = false;
        Socket connectionSocket = null;

        try {
            while (!exitServer ) {
                    if(...){
                    exitServer = true;
                }
                }
            }
        } catch (IOException e) {

           try {
               welcomeSocket.accept();
               listen();
           } catch (IOException e1) {
               System.out.println("Cannot open connection!!!");
           }

        } 
    }
}
绿巨人粉碎

当有人尝试连接时,ServerSocket.accept()方法将阻止并返回新的客户端套接字连接。将其放入while循环中,然后为这个新的套接字工作程序生成一个线程。类似于以下内容:

 ServerSocket welcomeSocket = new ServerSocket(port);
 while (true) {
     Socket socket = welcomeSocket.accept();
     new Thread(new RunnableSocketWorker(socket));
 }

如果您的客户确实决定断开连接,那可以了。希望正在使用它的套接字工作程序退出。如果新客户端尝试连接,则它们将使用ServerSocket对象和此无限循环进行连接。

套接字在Java中相对容易的一个重要原因是此ServerSocket类处理所有传入的新客户端。您为什么要自己编写该部分代码?

只需拿回它的插座即可,玩得开心!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

套接字客户端断开连接后 Python 线程保持活动状态

客户端断开连接后,C 套接字 TCP 服务器出现故障

客户端断开连接后,我是否必须关闭服务器端的套接字?

C#客户端/服务器套接字在断开连接后将不会再次连接

如何使具有服务器流连接的Android grpc客户端保持活动状态?

Node.js,如何在客户端退出后使服务器保持活动状态?

检查PHP套接字服务器中的断开连接客户端

套接字编程:客户端断开连接可使服务器挂起

如何使服务器套接字广播到那里,并让客户端套接字检测并连接

如何从NIO服务器套接字断开客户端

服务器/客户端套接字连接

突然断开连接后,Socket.io客户端无法重新连接到服务器

在使用服务的活动之间保持客户端套接字处于活动状态

如何使客户端等待服务器套接字连接?

当我无权访问服务器时,如何从客户端关闭套接字连接?

如何在此客户端和服务器之间创建套接字连接

如何使客户端请求保持活动状态以响应jsf中服务器的延迟响应

如何使用url将python套接字客户端连接到服务器套接字?

React客户端套接字未与服务器套接字连接

将客户端套接字与服务器套接字连接时出现问题

PHP客户端套接字与C#套接字服务器的连接

获取java.io.IOException:客户端服务器Java套接字程序中的流处于活动状态

在python中关闭服务器后,如何让客户端套接字继续监听服务器?

在node.js中保持服务器客户端响应连接打开并保持活动状态是否不好?

如果客户端与服务器断开连接,如何断开连接?

如何使用客户端套接字作为服务器套接字python

如何使客户端套接字等待服务器套接字

如何使客户端套接字等待来自服务器套接字的数据

Delphi 7-当客户端套接字突然断开连接时,如何删除Listview项目标题