2012-01-08 59 views
0

我的項目是一個UDP文件傳輸。java爲多客戶端UDP文件傳輸,無法綁定相同的地址

的流是:

  1. 服務器通過UDP數據包接收客戶機請求
  2. 服務器發送文件的字節到客戶
  3. 環1-2,當新客戶端連接(螺紋)

我需要爲一個客戶端創建一個套接字? 當我在我的本地主機上測試並創建多個套接字時,它會引發異常(地址已在使用中)

我該如何實現該應用程序?任何想法 ?或者我的觀念不正確?

+0

除非您在內部網絡上傳輸文件,否則不建議UDP數據傳輸,否則您將實施自己的確認機制:) Internet具有各種類型的問題,如丟包,重新排序。 – 2012-01-08 04:14:57

+0

不,您創建一個處理所有傳入udp請求的服務器端套接字。 UDP沒有「連接」。只有單個數據包可以從任何地方進入。 – 2012-01-08 04:15:35

+1

@Chris:如果重新排序是一個問題,那麼你反正會使用TCP。在許多使用情況下,udp是完全有效的可接受協議。 – 2012-01-08 04:16:31

回答

0

一次只能有一個套接字綁定到任何給定的UDP端口。

這聽起來像你可能有多個線程調用bind(),這會導致除第一個之外的所有內容都返回「正在使用」錯誤。您只需在開始創建工作線程之前調用bind()一次。

如果您需要多個線程來處理傳入消息,您應該讓一個調度程序線程偵聽套接字並將消息發送到工作線程。

如果您需要多個線程發送傳出消息,它們都可以使用相同的描述符。

如果您需要多個進程來執行此功能,他們將需要使用單獨的端口號。