当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python socket.socket.sendmsg用法及代码示例


用法:

socket.sendmsg(buffers[, ancdata[, flags[, address]]])

将正常和辅助数据发送到套接字,从一系列缓冲区收集非辅助数据并将其连接成单个消息。 buffers 参数将非辅助数据指定为 bytes-like 对象的可迭代对象(例如 bytes 对象);操作系统可以对可以使用的缓冲区数量设置限制(sysconf() value SC_IOV_MAX)。 ancdata 参数将辅助数据(控制消息)指定为零个或多个元组的可迭代 (cmsg_level, cmsg_type, cmsg_data) ,其中 cmsg_levelcmsg_type 分别是指定协议级别和协议特定类型的整数,而 cmsg_data是一个保存相关数据的bytes-like 对象。请注意,某些系统(特别是没有 CMSG_SPACE() 的系统)可能支持每次调用仅发送一个控制消息。 flags 参数默认为 0,并且与 send() 具有相同的含义。如果提供了 address 而不是 None ,它会设置消息的目标地址。返回值是发送的非辅助数据的字节数。

以下函数在支持SCM_RIGHTS 机制的系统上通过AF_UNIX 套接字发送文件说明符列表fds。另见recvmsg()

import socket, array

def send_fds(sock, msg, fds):
    return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))])

可用性:大多数 Unix 平台,可能还有其他平台。

使用参数 selfaddress 引发审计事件 socket.sendmsg

3.3 版中的新函数。

在 3.5 版中更改:如果系统调用被中断并且信号处理程序没有引发异常,则该方法现在重试系统调用而不是引发InterruptedError例外(见PEP 475理由)。

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 socket.socket.sendmsg。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。