在python中支持多种地址家族
其中,常用的最早的伯克利套接字中是AF_UNIX,
Linux中的套接字是AF_NETLINK,
针对 Linux 的另一种特性(Python 2.6 中新增)就是支持透明的进程间通信(TIPC)协议。 TIPC 允许计算机集群之中的机器相互通信,而无须使用基于 IP 的寻址方式。 Python 对TIPC 的支持以 AF_TIPC 家族的方式呈现。
而最常用的基于网络的编程是基于家族名字 AF_INET,或者地址家族:因特网。另一个地址家族 AF_INET6 用于第 6 版因特网协议(IPv6)寻址 。
1.创建套接字
要创建套接字,必须使用 socket.socket()函数,它一般的语法如下。
socket(socket_family, socket_type, protocol=0)
其中,socket_family 是 AF_UNIX 或 AF_INET(如前所述),socket_type 是 SOCK_STREAM
或 SOCK_DGRAM(也如前所述)。 protocol 通常省略,默认为 0。
所以,为了创建 TCP/IP 套接字,可以用下面的方式调用 socket.socket()。
tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
同样,为了创建 UDP/IP 套接字,需要执行以下语句。
udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
tips:使用from socketimport *,就可以直接写udpSock = socket(socket.AF_INET, socket.SOCK_DGRAM),不用每个函数名前都加上模块名socket了。
套接字内置的方法
一般来说,简单的标准流程为:(此为TCP服务器)
而TCP客户端的标准流程为:
创建UDP服务器:
UDP客户端:
以上只是基础的步骤,但是实际上并不使用,而是直接使用Python中已经封装好的类,socketserver模块,具体函数可以查询。(2中两个单词的S大写,3中则为小写)