c - 使用 UNIX 套接字 "zero-length datagrams"的原因是什么?

标签 c linux sockets unix unix-socket

recv() 's手册页我发现在这种情况下返回值可以为零:

Datagram sockets in various domains (e.g., the UNIX and Internet domains) permit zero-length datagrams. When such a datagram is received, the return value is 0.


何时或为什么应该在 UNIX 套接字互通中使用零长度数据报?它的目的是什么?

最佳答案

一种这样的用途是在您希望关闭 UDP 服务线程时解除对 recvfrom() 调用的阻塞 - 设置“终止”标志并在本地主机堆栈上发送零长度数据报。

关于c - 使用 UNIX 套接字 "zero-length datagrams"的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66351450/

相关文章:

linux - 支持所有 SGR ANSI 转义码的终端

java - 有没有办法从命令行指定 Ant 使用哪个 JVM?

ruby-on-rails - 错误-heroku "insecure world writable dir/var/psql_socket in PATH"

c - 试图删除 c 程序中重复的 0

连接 Fifos(客户端/服务器程序)

Java 将 BufferedReader、DataOutputStream 和 Sockets 传递给可运行线程类会导致写入流时出现套接字异常

c++ - 远程使用 C++ 模板函数

c - 最长的字符串

c - 为什么 char *s = "string"在不是 const 时不显示错误或警告

c - 尽管使用了正确的缩进,Makefile 仍缺少分隔符错误