簡體   English   中英

如何將sockaddr_in結構與同一子網和不同IP /用戶區分開

[英]How to difference sockaddr_in struct from same subnetwork and different IP/users

我目前正在使用Windows的Winsock2 API開發游戲服務器,直到將其移植到Linux為止。

我發現的主要問題是,我不知道如何區分來自同一路由器/網絡的游戲客戶端。 讓我們想象一下,在同一個網絡中的2個游戲玩家通過相同的路由器IP和端口(例如IP 220.100.100.100和端口5000)連接到Internet,我的C / C ++服務器如何區分兩個TCP連接並知道他們是兩個不同的玩家?

我可以在accept(...)返回??時返回套接字的sockaddr_in結構中找到任何區別嗎?

如果兩個客戶端(游戲玩家)在路由器后面,僅使用套接字就很難區分它們。

如果您使用的是TCP,那應該不是問題。 每個客戶端都通過唯一的套接字進行連接,因此您知道該套接字中傳入的任何內容都來自它們。 他們首次登錄時,我假設他們提供了一些憑據(名稱,密碼),因此只需將憑據與套接字關聯即可。

如果您使用的是無連接協議(如UDP),則在他們第一次與您聯系時,請給他們提供唯一的號碼或令牌。 下次他們與您聯系時,他們必須在消息中包含其令牌,以便您可以識別它們。

我想念什么嗎?

您無法通過測試套接字描述符來區分對socket()的調用嗎? 退貨?

暫無
暫無

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

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