socket — 低级网络接口

源代码: Lib/socket.py


此模块提供访问 BSD socket 接口。它可用于所有现代 Unix 系统、Windows、MacOS 及可能的其它平台。

注意

某些行为可能从属平台,由于调用的是操作系统的套接字 API。

可用性 :非 WASI。

This module does not work or is not available on WebAssembly. See WebAssembly 平台 了解更多信息。

Python 接口是 Unix 系统调用和套接字库接口到 Python 面向对象风格的简明直译: socket() 函数返回 套接字对象 其方法有实现各种套接字系统调用。参数类型比 C 接口中的要高级一些:如同采用 read() and write() 操作 Python 文件,接收操作的缓冲分配是自动的,而发送操作的缓冲长度是隐式的。

另请参阅

模块 socketserver

简化编写网络服务器的类。

模块 ssl

套接字对象的 TLS/SSL 包裹器。

套接字系列

由此模块支持的各种套接字系列,从属系统和构建选项。

特定套接字对象要求的地址格式是基于指定地址族自动选择的,当创建套接字对象时。套接字地址表示如下:

  • 地址对于 AF_UNIX (绑定到文件系统节点的) 套接字将表示成字符串,使用文件系统编码和 'surrogateescape' 错误处理程序 (见 PEP 383 )。Linux 抽象名称空间中的地址将返回成 像字节对象 采用初始 null 字节;注意,在此名称空间中的套接字可以与正常文件系统套接字通信,因此打算在 Linux 上运行的程序可能需要处理 2 种地址类型。字符串或像字节对象可用作任一地址类型,当将它作为自变量传递时。

    3.3 版改变: 先前, AF_UNIX 套接字路径是假定使用 UTF-8 编码。

    3.5 版改变: 可写 像字节对象 现接受。

  • 一对 (host, port) 用于 AF_INET 地址族,其中 host 是以 Internet 域表示法表示主机名的字符串像 'daring.cwi.nl' 或 IPv4 地址像 '100.50.200.5' ,和 port 是整数。

    • 对于 IPv4 地址,接受 2 种特殊形式而不是主机地址: '' 表示 INADDR_ANY 用于绑定到所有接口,而字符串 '<broadcast>' 表示 INADDR_BROADCAST 。此行为不兼容 IPv6,因此,可能想要避免这些,若打算采用 Python 程序支持 IPv6。

  • For AF_INET6 地址族 4 元组 (host, port, flowinfo, scope_id) 的使用,其中 flowinfo and scope_id 表示 sin6_flowinfo and sin6_scope_id 成员在 struct sockaddr_in6 在 C 中。对于 socket 模块方法, flowinfo and scope_id 可以省略只为向后兼容。注意,不管怎样,省略 scope_id 可能导致问题,当操纵 IPv6 作用域地址时。

    3.7 版改变: 对于多点播送地址 (采用 scope_id 有意义) address 可能不包含 %scope_id (或 zone id ) 部分。此信息是多余的,且可以安全省略 (推荐)。