python - socket.recvmsg 忽略 ancbufsize、辅助数据

标签 python python-3.x sockets

在unix系统上使用TCP套接字,python似乎完全忽略了我的ancbufsize。

data, ancdata, msg_flags, address = sock.recvmsg(1, socket.CMSG_LEN(4))

摘自recvmsg的Linux手册页:

size_t msg_controllen; /* ancillary data buffer len */

如果我跟踪我的程序,我会看到 msg_controllen 为 0,我似乎无法做任何事情来让它具有非零值。我还需要安装其他软件包吗?运行漂亮的centos7

这是我的 strace 输出中的 recvmsg 调用:

recvmsg(3, {msg_name(0)=0x7ffcc97e2c90, msg_iov(1)=[{"\360", 1}], msg_controllen=0, msg_flags=0}, 0) = 1

这仅返回 msg_iov,并且没有辅助数据,大概是因为 msg_controllen 为 0。

以上返回“360”

最佳答案

How does ancillary data in sendmsg() work?

我认为辅助数据永远不会通过 TCP 套接字发送,令人沮丧的是,许多文档中都没有列出这一点,包括 python 套接字文档、c 消息文档,甚至 APUE 书籍

关于python - socket.recvmsg 忽略 ancbufsize、辅助数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56366611/

相关文章:

sockets - 套接字和文件描述符

java - 使用 Java 在服务器应用程序和 Matlab 客户端之间进行套接字通信

python - 使用 ng-file-upload 上传时,Flask 服务器上的 Request.files 对象为空

python - Django:Heroku sleep 后数据库突然重置

python - Mat不是数字元组openCV 2

python - 一个Python程序,掷两个骰子并计算尝试次数,直到这两个骰子的数量都为6

python-3.x - 使用 NLP 模型查找该语句中存在的特定对象

python - 如何快速计算一组集合的所有交集的包含顺序

python - Beautiful Soup - 如何清理提取数据?

c - 在 linux 中使用 PF_PACKET 错误设置 IP_HDRINCL