Soo*_*nts 45 sockets networking
我需要一个应用程序,它将UDP数据包发送到某个网络服务器并接收响应.服务器回复请求来自的相同端口号,因此我首先需要将我的套接字绑定到任何UDP端口号.
对UDP端口号进行硬编码是一个坏主意,因为它可能被运行在同一台PC上的任何其他应用程序使用.
有没有办法将UDP套接字绑定到任何可用的端口?IMO应该是快速获得自由端口#的有效方法,它由例如accept()函数使用.
如果不是,那么尝试绑定并检查WSAEADDRINUSE/EADDRINUSE状态的最佳策略是什么:从1025或1025 + rand()或其他一些顺序尝试端口?
Rem*_*eau 212
另一种选择是将端口0指定为bind()
.这将允许您绑定到特定的IP地址(如果您已安装多个),同时仍然绑定到随机端口.如果您需要知道选择了哪个端口,则可以getsockname()
在执行绑定后使用.