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

Calling connect() multiple times on UDP socket to send to different target address - valid?

本文关键字:目标 有效 地址 套接字 UDP 调用 Connect      更新时间:2023-10-16

我正在研究UDP通信协议实现。

我有一个问题,要connect()呼叫UDP。

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

我没有找到任何有效的文档(因此,测试可能只能告诉我它是否碰巧工作,这可能是不可移植的)。我目前正在Windows 7上使用Winsock2,但要便于其他(较新的)Windows版本和Linux。

至少对于linux,manpage(man 2 connect)说确定:'通常,基于连接的协议插座可以成功连接()一次;无连接协议插座可以多次使用Connect()来更改其关联。无连接的插座可能会溶解Asso- 通过连接到SA_FAMILILY SACOCKADDR设置为AF_UNSPEC的ciation(自kernel 2.2以来,在Linux上支持)。'