當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。