ServerSocket类的accept方法

时间:2015-05-02 05:18:45

标签: java sockets networking network-programming serversocket

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

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

2 个答案:

答案 0 :(得分:3)

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

accept()方法返回一个Socket,它实际上是为特定客户端(请求连接的客户端)创建的,因此是Java for-Client Socket(驻留在服务器上),而不是客户端-socket.Client的套接字驻留在客户端,用于启动通信。以下是它的工作原理:

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

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()方法设置。否则,这个方法   无限期地阻止。

答案 1 :(得分:0)

  

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

不,它是 Socket对象,表示该连接的此端点。客户端的套接字代表另一个端点。

  

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

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