簡體   English   中英

帶有c ++和windows API的udp套接字

[英]udp socket with c++ and windows API

我正在為游戲編寫UDP服務器。 你知道在一個端口上是否可以在UDP中使用多串口? 或者我必須使用動態端口(一個插槽=一個端口)?

謝謝

在一個UDP端口上創建多個套接字沒有多大意義。 UDP不是像TCP那樣的點2點協議,所以使用一個“服務器”套接字綁定到特定端口,可以處理數百個客戶端。

請參閱使用SO_REUSEADDR ...

使用SO_REUSEADDR

SO_REUSEADDR套接字選項允許套接字強制綁定到另一個套接字使用的端口 第二個套接字調用setsockopt,其optname參數設置為SO_REUSEADDR,optval參數設置為布爾值TRUE,然后在與原始套接字相同的端口上調用bind。 第二個套接字成功綁定后,綁定到該端口的所有套接字的行為都是不確定的。 例如,如果同一端口上的所有套接字都提供TCP服務,則無法保證端口上的任何傳入TCP連接請求都由正確的套接字處理 - 該行為是不確定的。 惡意程序可以使用SO_REUSEADDR強制綁定已用於標准網絡協議服務的套接字,以拒絕訪問這些服務。 使用此選項無需特殊權限。

額外閱讀: SO_REUSEADDR究竟做了什么?

如果通過setsockopt指定SO_REUSEADDR,當然可以在一個端口上有多個UDP套接字。 但是,我懷疑你真正需要的是使用一個UDP套接字與多個客戶端通信,這也是可行的。 UDP不是面向連接的,像sendto和recvfrom這樣的UDP API可以區分一個套接字上的不同對等體。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM