2011-09-22 25 views
0

我下面的試題:UDP通信需要Java ServerSocket嗎?

「讓我們假設你想使用UDP的客戶端你需要在UDP爲什麼或者爲什麼不管理並行連接創建一個新的socket什麼。?如果多個客戶端連接到該套接字,會發生?「

問題也提到一個Java類TCPServer.java,它創建的ServerSocket,後來在while(true)循環,它接受連接,併爲來自用戶的傳入的連接請求套接字。

在我看來,TCP服務器僅用於TCP連接,所以不可能爲UDP客戶端使用相同的服務器端代碼。

回答

1

你在正確的軌道上。

ServerSockets用於TCP連接。 DatagramSockets(它們仍然是無連接的)用於UDP。

並回答另一部分,即「如果多個客戶端連接到該套接字會發生什麼?」答案是:

  1. 如果是UDP,那麼它的罰款,因爲它是連接
  2. ,如果它是TCP,然後將ServerSocket應該看到連接請求,並建立了雙向通信的新的Socket與客戶端

回答「爲什麼或爲什麼不是」 - UDP是無連接的,因此一個新的Socket不用於通信。 UDP只是收到一個DatagramPacket,然後丟棄它(如果應用程序確定它無效,格式錯誤等),或者它回覆DatagramPacket。在UDP中沒有連接,沒有連接狀態,也沒有輸入/輸出流。

0

該問題請您解釋爲什麼爲什麼不是。所以實質上,如果你不相信ServerSocket代碼可以用於UDP,那麼你必須說明原因。從你最後一句話我相信你知道這個問題的答案,現在你只需要有信心寫下來。