在我的tcp程序中,我有一个名为fd的int,fd是set =调用accept()时返回的文件描述符。我现在想把这段代码变成udp而不是tcp,但是udp没有accept()所以我如何得到值accept()会返回,但是在udp中?
答案 0 :(得分:2)
UDP是无连接的,因此未使用listen()
和accept()
(connect()
仅指定静态绑定,因此可以使用send()
/ recv()
代替sendto()
/ recvfrom()
,从而允许操作系统为您执行一些数据包过滤。您从socket()
获取UDP描述符,然后根据需要在其上发送/接收,其中sendto()
(或connect()
+ send()
)告诉它将发送出站数据包的位置,recvfrom()
(或connect()
+ recv()
)告诉您入站数据包的来源。单个UDP套接字可以使用sendto()
将数据包发送到多个客户端,并使用recvfrom()
从多个客户端接收数据包。