首页 文章

ServerSocket类的accept方法

提问于
浏览
-4

显然,它返回一个Socket对象 . 这是尝试连接/连接到ServerSocket对象的客户端的套接字吗?

此外,此方法是一次接受来自客户端的一个连接还是多个连接?

2 回答

  • 3

    要接受传入的客户端连接,必须调用 ServerSocket.accept() 方法 .

    accept() 方法返回一个Socket,它实际上是为特定客户端(请求连接的客户端)创建的,因此Java for-Client Socket (驻留在Server上),而不是Client-socket.Client 's socket resides on Client' s用于开始沟通 . 下面是它的工作原理:

    用于 Build 通信的服务器端套接字(但是,基于线程的每个客户端的不同连接): -

    ServerSocket serverSocket = new ServerSocket(9000);    
    boolean isStopped = false;
    while(!isStopped){
        Socket clientBasedSocket = serverSocket.accept();  
        //do something with clientBasedSocket
    }
    

    客户端套接字: -

    Socket s=new Socket("SERVER'S IP",9000);
    

    每次调用accept()方法时只打开一个传入连接 .

    根据Javadoc:

    public Socket accept() throws IOException
    

    等待传入的客户端(请求) . 假设已使用setSoTimeout()方法设置超时值,此方法将阻塞,直到客户端连接到指定端口上的服务器或套接字超时 . 否则,此方法无限期地阻塞 .

  • 0

    显然,它返回一个Socket对象 . 这是尝试连接/连接到ServerSocket对象的客户端的套接字吗?

    不,它是一个新的 Socket 对象,表示该连接的此 endpoints . 客户端的套接字表示另一个 endpoints .

    这个方法一次或多次接受来自客户端的一个连接吗?

    一次一个 . 奇怪的问题 . 它为一个连接返回一个套接字 .

相关问题