重新绑定UDP套接字

时间:2012-11-09 05:58:17

标签: visual-c++ winsock

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

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

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

此外,是否有更好的方法允许用户更改目标IP /端口。我在visual studio btw上使用C ++。

感谢。

1 个答案:

答案 0 :(得分:0)

2MSI超时不适用于UDP。但是,另一个应用程序可能正在使用您尝试绑定的ip / port。如果您知道ip / port可以安全使用,则可以在调用setsockopt()之前使用SO_REUSEADDR启用套接字bind()选项。