一.关于套接字的介绍
1.套接字的大概介绍
<1>网络化的应用程序在开始任何通讯之前都必须要创建套接字,没有它就完全没办法通讯。
<2>一开始,套接字被设计用在同一台主机上多个应用程序之间的通讯,这也叫进程间通讯,或IPC。
<3>套接字有两种,分别是基于文件型的和基于网络型的。
<4>AF_UNIX表示”地址家族:UNIX” –>基于文件的。
AF_INET表示”地址家族:Internet”–>基于网络的。
<5>python只支持AF_INET、AF_UNIX、AF_NETLINK家族。
2.套接字地址:主机和端口
套接字是通讯的最底层结构。一个Internet地址由网络通讯所必需的主机和端口组成。
3.面向连接与无连接
无论使用哪一种地址家族,套接字的类型只有两种:面向连接的套接字和无连接的套接字
<1>面向连接的套接字
i.在通讯前一定要建立一条连接,面向连接的通讯方式提供了顺序的,可靠的,不会重复的数据传输。
ii.实现这种连接的主要协议是TCP(传输控制协议),要创建TCP套接字就得在创建的时候指定套接字的类型为SOCK_STREAM。
<2>无连接的套接字
i.无需连接就可以进行通讯,数据到达的顺序,可靠性及数据不重复性就无法保证了。
ii.实现这种连接的主要协议是UDP(用户数据报协议),要创建UDP套接字就得在创建的时候指定套接字类型为SOCK_DGRAM。
二.python中的网络编程
主要使用socket模块,模块中的socket()函数被用来创建套接字。套接字会提供一系列函数来支持基于套接字的网络通讯。
1.socket()模块函数
使用socket.socket()函数来创建套接字,语法:
sockete(socket_family,socket_type,protocol=0)
讲解:
socket_family可以是AF_UNIX或AF_INET;socket_type可以是SOCK_STREAM或SOCK_DGRAM;protocol一般不填,默认值是0.
<1>创建一个TCP/IP的套接字
tcpSock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
<2>创建一个UDP/IP的套接字
udpSock=sock.socket(socket.AF_INET,socket.SOCK_DGRAM)
2.套接字对象方法
图片中介绍了套接字s的主要方法: