在UDP套接字上多次调用connect()以发送到不同的目标地址 - 有效吗?

时间:2016-11-30 12:32:17

标签: c++ linux windows network-programming udp

我正在开发UDP通信协议。

关于对UDP的connect()调用,我有一个问题。

我想使用connect()和send()而不是sendto()。通常接收器端不会改变。但是,在某些情况下,它可能会。 在已连接的UDP套接字上调用connect()是否有效,无需关闭并重新打开套接字(以及松开缓冲的接收数据报),设置不同的目标?

我没有找到任何文件是否有效(因此,测试可能只会告诉我它是否正常工作,可能无法移植)。我目前在Windows 7上使用winsock2,但希望可以移植到其他(较新的)Windows版本和Linux。

1 个答案:

答案 0 :(得分:1)

至少对Linux来说,联机帮助页(man 2 connect)说好了: '通常,基于连接的协议套接字可能只成功连接()一次;无连接协议套接字可以多次使用connect()来更改它们的关联。无连接插座可能会解散        通过连接到sockaddr的sa_family成员设置为AF_UNSPEC的地址进行连接(自Linux 2.2以来在Linux上受支持)。 “