套接字编程:socket函数
一般来说,Python创建套接字使用socket函数,我们将数据交给 socket,然后 socket 通过各种函数实现数据封装,建立目标主机端口连接,在客户端的 socket 进行数据接受,交付给主机。
socket 函数使用的格式为:socket(family,type[,protocol])
family 指定应用程序使用的通信协议的协议族,对于 TCP/IP 协议族,该参数为 AF_INET。
type 是创建的套接字的类型,分为以下几种:
1、流式套接字(SOCK-STREAM)。提供一种可靠的、面向连接的双向数据传输服务,实现了数据无差错、无重复的发送。流式套接字内设流量控制,被传输的数据看作是无记录边界的字节流。在 TCP/IP 协议族中,使用 TCP 协议来实现字节流的传输,当用户想要发送大批量的数据或者对数据传输有较高的要求时,可以使用流式套接字。
2、数据报套接字(SOCK-DGRAM)。提供一种无连接、不可靠的双向数据传输服务。数据包以独立的形式被发送,并且保留了记录边界,不提供可靠性保证。数据在传输过程中可能会丢失或重复,并且不能保证在接收端按发送顺序接收数据。在 TCP/IP 协议簇中,使用 UDP 协议来实现数据报套接字。在出现差错的可能性较小或允许部分传输出错的应用场合,可以使用数据报套接字进行数据传输,这样通信的效率较高。
3、原始套接字(SOCK-RAW)。该套接字允许对较低层协议(如 IP 或 ICMP)进行直接访问,常用于网络协议分析,检验新的网络协议实现,也可用于测试新配置或安装的网络设备。
protocol 指明所要接收的协议类型,通常为 0 或者不填。
