2017-01-23 90 views
-1

任何人都可以請解釋我如何accept()方法工作。它返回什麼?它是否在服務器端創建一個新的套接字?它是否返回在客戶端創建的套接字的引用?我很困惑。如果有人可以提供幫助,這將非常有幫助。ServerSocket接受()方法

回答

2

ServerSocket.accept()等待/塊,直到客戶端連接,建立連接,並返回其可用於與所述客戶端進行通信的服務器端Socket對象(客戶端具有Socket對象以及)

+0

因此,在ServerSide上創建新的Socket? @Michael Ritter – CHAMP3333

+0

嗯是一個套接字創建在客戶端和服務器用於溝通的每一邊是什麼 –

+0

所以服務器端的新套接字將創建在新端口或相同的指定端口..? – CHAMP3333

1

Java API documentation of ServerSocket

監聽連接將這個接口實現的,並接受它。 方法阻塞,直到建立連接。

一個新的Socket s創建 ,如果有安全管理,安全管理器的 checkAccept方法被調用 s.getInetAddress().getHostAddress()s.getPort()爲 參數,以確保允許該操作。這可能導致 SecurityException。你

也可以找到關於它的一個很好的教程:here

0

javadoc

public Socket accept() throws IOException 

監聽連接進行到此套接字和接受它。該方法會阻塞,直到建立連接。

一個新的Socket s創建,如果有安全管理,安全管理器的checkAccept方法被調用s.getInetAddress().getHostAddress()s.getPort()作爲參數,以確保允許該操作。這可能導致SecurityException

總之,如果您設置ServerSocket聽您的計算機/設備上的特定端口上,它會自動接受第一個遠程客戶端試圖連接到它。 A Socket已返回,您可以使用它的InputStreamOutputStream來鎖定以發送和接收數據。