java - 套接字仅接受一个客户端

标签 java sockets tcp server

我已经用java创建了一个接受客户端连接的服务器。但我只能连接一个客户端

class Server extends Thread{

    private void startServer() {

     try{
        ss=new ServerSocket(3000);
        s=ss.accept();
        DataRead d1=new DataRead();        
        d1.t.start();



         }catch(Exception er){
             er.printStackTrace();
         }
        }                                        
  }

最佳答案

你只能接受一个套接字。在您的jButton1ActionPerformed中您有

s=ss.accept();

但是,当您单击 jButton1 按钮时,只会调用一次。如果您希望多个客户端能够连接,则需要不断调用 accept()

此外,请记住,每次调用 accept() 都会阻塞,直到客户端连接,然后返回一个代表该连接的套接字。因此,如果您想支持多个客户端,则不应将 Socket 作为全局变量,而应将其包含在 DataRead 类的构造函数中,因此每个阅读器在唯一的套接字/连接/客户端上运行。

关于java - 套接字仅接受一个客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11010348/

相关文章:

c++ - 使用启用了防火墙的 websocketpp 接受连接的问题

api - 如何让docker在centos下用systemd监听unix和TCP socket

c - 取消引用 TCP 客户端中不完整类型的指针? (C)

java - 如何使用 SIGKILL Process.destroy() 执行 SIGTERM 在 java 中终止 Linux 进程

java - 为什么 Collections.sort() 只适用于列表而不适用于集合?

c - C 的基本非阻塞 tcp 连接示例

c - 带有 SIOCSIFFLAGS 的 setsockopt 和 ioctl 有什么区别?

java - java中使用hashmap或数组列表的交集

java - 当对象实现可序列化时,ReSTLet/Jackson 的工作方式有所不同

Android - JavaPhoenixChannel - EPIPE(断管)