首页 文章

UDP(单播客户端)可以recvfrom()除sendto()之外的其他服务器吗?

提问于
浏览
1

我在C(单播)中创建一个UDP套接字客户端,并想知道为什么recvfrom()有一个struct sockaddr *参数,其中在手册页中说明了一个空指针,或指向一个sockaddr结构,其中发送地址是存储 .

我是否有可能从我发送的服务器以外的其他服务器收到消息?如果是,如何创建此方案?

如果不是,说这个参数仅在使用广播模式时有用是否正确?

3 回答

  • 0

    是的,这是完全可能的 . 这样做的原因是UDP不是基于流的,而是基于数据包的 . 处理每个数据包时没有任何历史记录(发送或接收其他数据包) .

    因此,您还可以打开UDP端口,然后从中将数据包发送到不同的主机 . 但是,我不记得API如何支持它 .

  • -1

    UDP套接字将 recvfrom() 任何主机发送到具有正确端口的主机,除非您明确 connect() ,在这种情况下您只能 write()read() ,并在收到ICMP消息时收到错误 .

  • 2

    考虑到你总是在UDP中有两方,似乎很明显有人必须首先recvfrom() .

相关问题