前面我们动手用socket创建了TCP和UDP的服务端和客户端通信的小程序,其实socket模块下还有很多有用的属性,下面我们逐一解读一下,本节不要求掌握,但一定要了解,等用的时候知道socket有这么个东西就成,具体怎么使用可以到时候直接查看源码参数解读。
这些大部分是用于网络应用开发的属性:
属性名称 | 描述 |
---|---|
数据属性 | |
AF_UNIX、AF_INET、AFINET6、AF_NETLINK、AF_TIPC | Python中支持的套接字地址家族 |
SO_STREAM、SO_DGRAM | 套接字类型(TCP=流,UDP=数据报) |
has_ipv6 | 是否支持IPv6的布尔标记 |
异常 | |
error | 套接字相关错误 |
herror | 主机和地址相关错误 |
gaierror | 地址相关错误 |
timeout | 超时时间 |
函数 | |
socket() | 以给定的地址家族、套接字类型和协议类型(可选)创建一个套接字对象 |
socketpair() | 以给定的地址家族、套接字类型和协议类型(可选)创建一对套接字对象 |
create_connection() | 常规函数,它接收一个地址(主机名,端口号)对,返回套接字对象 |
fromfd() | 以一个打开的文件描述创建一个套接字对象 |
ssl() | 通过套接字启动一个安全套接字层连接;不执行证书验证 |
getnameinfo() | 给定一个套接字地址,返回(主机名,端口号)二元组 |
getaddrinfo() | 获取一个五元组序列形式的地址信息 |
getfqdn() | 返回完整域名 |
gethostname() | 返回当前主机名 |
gethostbyname() | 将一个主机名映射到它的IP地址 |
gethostbyname_ex() | gethostbyname()的扩展版本,返回主机名,别名主机集合和IP地址列表 |
gethostbyaddr() | 将一个IP地址映射到DNS信息;返回与gethostbyname_ex()相同的3元组 |
getprotobyname() | 将一个协议名映射到一个数字 |
getservbyname()/getservbyport() | 将一个服务名映射到一个端口号,或者反过来;对于任何一个函数来说,协议名都是可选的。 |
ntohl()/ntohs() | 将来自网络的整数转换为主机字节顺序 |
htonl()/htons() | 将来自主机的整数转换为网络字节顺序 |
inet_aton()/inet_ntoa() | 将IP地址八进制字符串转换成32位的包格式,或者反过来(仅适用于IPv4) |
inet_pton()/inet_ntop() | 将IP地址字符串转换成打包的二进制格式,或者反过来 |
getdefaulttimeout()/setdefaulttimeout | 以秒(浮点数)为单位返回默认套接字超时时间;或者设置其时间 |