我正在开发UDP通信协议。
关于对UDP的connect()调用,我有一个问题。
我想使用connect()和send()而不是sendto()。通常接收器端不会改变。但是,在某些情况下,它可能会。 在已连接的UDP套接字上调用connect()是否有效,无需关闭并重新打开套接字(以及松开缓冲的接收数据报),设置不同的目标?
我没有找到任何文件是否有效(因此,测试可能只会告诉我它是否正常工作,可能无法移植)。我目前在Windows 7上使用winsock2,但希望可以移植到其他(较新的)Windows版本和Linux。
答案 0 :(得分:1)
至少对Linux来说,联机帮助页(man 2 connect)说好了: '通常,基于连接的协议套接字可能只成功连接()一次;无连接协议套接字可以多次使用connect()来更改它们的关联。无连接插座可能会解散 通过连接到sockaddr的sa_family成员设置为AF_UNSPEC的地址进行连接(自Linux 2.2以来在Linux上受支持)。 “