在UDP中需要socket的文件描述符

时间:2014-10-05 16:13:14

标签: c sockets networking tcp udp

在我的tcp程序中,我有一个名为fd的int,fd是set =调用accept()时返回的文件描述符。我现在想把这段代码变成udp而不是tcp,但是udp没有accept()所以我如何得到值accept()会返回,但是在udp中?

1 个答案:

答案 0 :(得分:2)

UDP是无连接的,因此未使用listen()accept()connect()仅指定静态绑定,因此可以使用send() / recv()代替sendto() / recvfrom(),从而允许操作系统为您执行一些数据包过滤。您从socket()获取UDP描述符,然后根据需要在其上发送/接收,其中sendto()(或connect() + send())告诉它将发送出站数据包的位置,recvfrom()(或connect() + recv())告诉您入站数据包的来源。单个UDP套接字可以使用sendto()将数据包发送到多个客户端,并使用recvfrom()从多个客户端接收数据包。