繁体   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