• Python Socket对象的内置函数和属性一览表


    应用程序通常通过“套接字”(socket)向网络发出请求或者应答网络请求,使主机间或者计算机上的进程间可以通信Python。 提供了两种访问网络服务的功能。其中低级别的网络服务通过套接字实现,它提供了标准的 BSD 套接字 API,可以访问底层操作系统套接字接口的全部方法。而高级别的网络服务通过模块 SocketServer 实现,它提供了服务器中心类,可以简化网络服务器的开发。

    socket 对象的内置函数和属性。在 Socket 库中,socket 对象提供了表 1 所示的内置函数。

    表 1:socket 对象的内置函数
    函数功能
    服务器端套接字函数
    bind()用于绑定地址(host, port)到套接字,在 AF_INET 下,以元组(host, port)的形式表示地址
    listen()用于开始 TCP 监听。backlog 指定在拒绝连接之前,操作系统可以挂起的最大连接数量。该值至少为 1,大部分应用程序设为 5 即可
    accept()被动接受TCP客户端连接,(阻塞式)等待连接的到来
    客户端套接字函数
    connect()主动初始化 TCP 服务器连接,一般 address 是形式为(hostname, port)的二元组,如果连接出错,则返回socket.error错误
    connect_ex()connect() 函数的扩展版本,在出错时返回出错码,而不是抛出异常
    公共用途的套接字函数
    recv()接收 TCP 数据,数:据以字符串形式返回,bufsize 指定要接收的最大数据量,flags 提供有关消息的其他信息,通常可以忽略
    send()发送 TCP 数据,将字符串中的数据发送到连接的套接字。返回值是要发送的字节数量,该数量可能小于字符串的长度
    sendall()完整发送 TCP 数据。将字符串中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据。若成功,则返回 None;若失败,则抛出异常
    recvform()接收 UDP 数据,与 recv() 的功能类似,但返回值是 (data, address)。其中 data 是包含接收数据的字符串,address 是发送数据的套接字地址
    公共用途的套接字函数
    sendto()发送 UDP 数据,将数据发送到套接字,address 是形式为 (ipaddr, port) 的元组,用于指定远程地址。返回值是发送的字节数
    close()关闭套接字
    getpeername()返回连接套接字的远程地址。返回值通常是元组(ipaddr, port)

    getsockname()

    返回套接字自己的地址。返回值通常是元组(ipaddr, port)
    setsockopt(level, optname, value)设置给定套接字选项的值
    getsockopt(level, optname[,buflen])返回套接字选项的值
    settimeout(timeout)设置套接字操作的超时时间,timeout 是一个浮点数,单位是秒。值为 None 表示没有超时时间。一般,超时时间应该在刚创建套接字时设置,因为它们可能用于连接的操作(如connect())
    gettimeout()返回当前超时时间的值,单位是秒,如果没有设置超时时间,则返回 None
    fileno()返回套接字的文件描述符
    setblocking(flag)如果 flag 为 0,则将套接字设为非阻塞模式;否则,将套接字设为阻塞模式(默认值)。在非阻塞模式下,如果调用 recv() 没有发现任何数据,或 send() 调用无法立即发送数据,那么将引起 socket.error 异常
    makefile()创建一个与套接字相关联的文件


    除上述内置函数之外,在 socket 模块中还提供很多与网络应用开发相关的属性和异常。表 2 列出了一些比较常用的属性和异常。

    表 2:socket 模块的常见属性和异常
    属性和异常描述
    属性
    AF_UNIX、AF_INET、AF_INET6、AF_NETLINK、AF_TIPCPython 中支持的套接字地址
    SOCK_STREAM、SOCK_DGRAM套接字类型 (TCP=流, UDP=数据报)
    socket.AF_UNIX只能够在单一的UNIX系统进程间通信
    socket.AF_INET服务器之间的网络通信
    socket.AF_INET6IPv6
    socket.SOCK_STREAM流式套接字,是为TCP服务的
    socket.SOCK_DGRAM数据报式套接字,是为 UDP 服务的
    socket.SOCK_RAW原始套接字,普通的套接字无法处理 ICMP、IGMP 等网络报文,而 SOCK_RAW 可以。另外 SOCK_RAW 也可以处理特殊的 IPv4 报文。利用原始套接字,可以通过 IP_HDRINCL 套接字选项由用户构造 IP 头
    socket.SOCK_SEQPACKET可靠的连续数据包服务
    has_ipv6表示是否支持 IPv6 的布尔标记
    异常
    error套接字错误
    herror主机和地址错误
    gaierror地址错误
    timeout超时时间
  • 相关阅读:
    C++——智能指针
    ShardingSphere实现读写分离
    css让元素保持等比例宽高
    【C++】重载cout和cin
    Bootstrap(一)
    ZYNQ之GPIO机制
    golang中context使用总结
    windicss使用
    两个栈实现一个队列
    如何开启自己的网络人生
  • 原文地址:https://blog.csdn.net/JSPSEO/article/details/124975676