1.什么是套接字
一开始,套接字被设计用在一台主机上的多个应用程序之间的通信,也被称为进程间通信(IPC)。
套接字有两种:基于文件的和基于网络的。
2.套接字家族
(1)基于文件:
家族名:AF_UNIX(在POSIX1.g标准中,也叫AF_LOCAL),表示“地址家族(缩写AP,老系统也叫协议家族即PF):UNIX”
(2)基于网络:
家族名:AF_INET,表示“地址家族(AF):Internet”
另一种地址家族AF_INET6用于IPv6
(3)Python2.5中加入了一种Linux套接字的支持:AF_NETLINK
让用户代码与内核代码之间的IPC可以使用标准BSD套接字接口。
以上3中地址家族中,基于网络的AF_INET家族使用最为广泛,也是使用socket()创建套接字时默认的地址家族。
3.套接字类型
(1)面向连接的套接字(流套接字):基于TCP协议
TCP套接字类型:SOCK_STREAM
(2)面向无连接的套接字(数据报套接字):基于UDP协议
UDP套接字类型:SOCK_DGRAM(注释:DGRAM为datagram的缩写)
4.套接字地址
套接字地址结构依赖于套接字家族。详见:http://docs.python.org/3/library/socket.html#module-socket
针对AP_INET地址家族,是一个格式为(主机名host,端口port)的元组
host:域名('www.python.org')或者IP地址
port:一个数字(注意:低于1024的端口号被用于标准服务)