在unix系统上,使用TCP套接字,python似乎完全忽略了我的ancbufsize。
data, ancdata, msg_flags, address = sock.recvmsg(1, socket.CMSG_LEN(4))
从recvmsg的Linux手册页:
size_t msg_controllen; / *辅助数据缓冲区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”
答案 0 :(得分:0)
How does ancillary data in sendmsg() work?
我认为辅助数据永远不会通过TCP套接字发送,令人沮丧的是很多文档中都没有列出,包括python套接字文档,c消息文档甚至APUE书籍