gpt4 book ai didi

c++ - 如何区分来自同一子网和不同 IP/用户的 sockaddr_in 结构

转载 作者:行者123 更新时间:2023-11-28 08:03:20 26 4
gpt4 key购买 nike

我正在使用 Windows 中的 Winsock2 API 开发一个游戏服务器,直到将其移植到 Linux 之前。

我发现的主要问题是我不知道如何区分来自同一路由器/网络的游戏客户端。假设同一网络中的 2 个游戏玩家通过相同的路由器 IP 和端口访问互联网,例如 IP 220.100.100.100 和端口 5000,我的 C/C++ 服务器如何区分这两个 TCP 连接并知道它们是两个不同的玩家吗?

当 accept(...) 返回时,我能在返回套接字的 sockaddr_in 结构中找到任何区别吗??

最佳答案

如果两个客户端(游戏玩家)在路由器后面,仅使用套接字很难区分它们。

如果您使用的是 TCP,那么这应该不是问题。每个客户端都通过一个唯一的套接字进行连接,因此您知道进入该套接字的任何内容都来自它们。当他们第一次登录时,我假设他们提供了一些凭据(名称、密码),因此只需将凭据与套接字相关联即可。

如果您使用的是 UDP 等无连接协议(protocol),那么在他们第一次与您联系时,您会为他们提供一个唯一的编号或 token 。下次他们与您联系时,他们必须在消息中包含他们的 token ,以便您可以识别他们。

我错过了什么吗?

关于c++ - 如何区分来自同一子网和不同 IP/用户的 sockaddr_in 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10837646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com