0

我制作了一个使用 udp 发送消息的程序。该程序最初将使用默认 IP 地址和端口初始化 udp 套接字。但是,它还应该允许用户在运行时更改目标 IP 地址和端口。

目前,如果用户更改 ip 地址/端口,我将关闭当前套接字,并使用新的 ip 地址/端口重新初始化/绑定套接字。

该程序能够使用初始套接字成功发送消息。但是当我重新绑定 ip 地址/端口时,绑定有时会失败。Bind() 返回值 -1。我在网上做了一些搜索,发现当套接字关闭时 TCP 协议有 2msl 超时。这适用于UDP吗?

此外,是否有更好的方法允许用户更改目标 IP/端口。顺便说一句,我在 Visual Studio 上使用 C++。

谢谢。

4

1 回答 1

0

2MSI 超时不适用于 UDP。但是,另一个应用程序可能正在使用您尝试绑定到的 IP/端口。如果您知道 ip/port 可以安全使用,您可以setsockopt()SO_REUSEADDR调用bind().

于 2012-11-10T04:13:36.700 回答