显然,它返回一个Socket对象。这是尝试连接/连接到ServerSocket对象的客户端的套接字吗?
此外,此方法是一次接受来自客户端的一个连接还是多个连接?
答案 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
对象,表示该连接的此端点。客户端的套接字代表另一个端点。
此方法是一次接受来自客户端的一个连接还是多个连接?
一次一个。奇怪的问题。它为一个连接返回一个套接字。