【问题标题】:Receiving empty payload with recvfrom when using SOCK_DGRAM?使用 SOCK_DGRAM 时使用 recvfrom 接收空有效负载?
【发布时间】:2017-07-04 12:47:26
【问题描述】:

是否可以通过recvfrom() 和基于SOCK_DGRAM 的套接字接收任何空有效负载?服务器只对客户端标头感兴趣以将其发送回消息(即单个消息,仅发送协议)。

【问题讨论】:

  • 是的。您可以使用 UDP 发送零长度数据报。
  • @EJP 怎么样? recvfrom() 从不阻塞零长度,并且尝试使用例如 cat /dev/null | nc -u 127.0.0.1 1234recvfrom() 在忙等待中发送空包什么都不做。
  • 使用send()sendto(),提供零长度参数。 recvfrom() 将阻塞直到收到数据报或发生错误。
  • @EJP recvfrom() 在我的情况下从不阻塞并且总是返回零。

标签: c linux sockets udp recvfrom


【解决方案1】:

从套接字 API 和至少协议 IP、UDP、UNIX 的角度来看,0 大小的数据报是完全有效的:可以发送和接收它们。

【讨论】:

    猜你喜欢
    • 2011-02-20
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 2021-08-11
    • 2013-04-12
    • 2017-06-14
    相关资源
    最近更新 更多