socket 套接字模块用于TCP、UDP、IP等协议的通讯。
基本使用方法有:
1. 创建socket对象
socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM, proto=0, fileno=None)
使用方法举例
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
说明:
(1)socket families(地址簇):
AF_UNIX # unix本机之间进行通信
AF_INET #使用IPv4
AF_INET6 #使用IPv6
注:socket.socket()中第一个参数能使用上述值。
(2)socket types:
SOCK_STREAM # TCP套接字类型
SOCK_DGRAM # UDP套接字类型
SOCK_RAW #原始套接字类型,功能强大
SOCK_RDM #是一种可靠的UDP形式,即保证交付数据报但不保证顺序。
SOCK_SEQPACKET #可靠的连续数据包服务
注:这些常量都是套接字类型,应用于socket()函数中的第二个参数中,根据系统的不同,可能有更多的常数。虽然SOCK_STREAM和SOCK_DGRAM更常见,但原始套接字SOCK_RAW也经常用于某些特殊的网络操作。SOCK_RAM原始套接字用来提供对原始协议的低级访问,可以处理特殊的IPv4报文,在需要执行某些特殊操作时使用,例如普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以。创建这种套接字可以监听网卡上的所有数据帧;此外,利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP头。SOCK_RAM通常仅限于高级用户或管理员运行的程序使用。
(3)proto协议
0 (默认,可不写)与特定的地址家族相关的协议,如果是 0 ,则系统就会根据地址格式和套接类别,自动选择一个合适的协议
1 等价于IPPROTO_ICMP,ICMP协议
6 等价于IPPROTO_TCP,TCP协议