python socket模块之常用函数

1.Socket的实例

Socket实例化的格式为:

socket(family,type[,protocal])


其中,三个参数中的family是要使用的地址族。

常用的协议族:
AF_INET、AF_INET6、AF_LOCAL(或称AF_UNIX、UNIX域
Socket)、AF_ROUTE等。默认值为socket.AF_INET,通常使用这个默
认值即可。


第二个参数type用来指明Socket类型,这里可以使用的值有三个:
SOCK_STREAM,这是TCP类型,保证数据顺序及可靠性;
SOCK_DGRAM,用于UDP类型,不保证数据接收的顺序,非可靠连
接;SOCK_RAW,这是原始类型,允许对底层协议如IP或ICMP进行直
接访问,基本不会用到。默认值为SOCK_STREAM。


第三个参数指使用的协议,这个参数是可选的。通常赋值“0”,由系统自动选择。
如果希望初始化一个TCP类型的Socket,就可以使用如下语句。

s=socket.socket()


这条语句实际上相当于
socket.socket(socket.AF_INET,socket.SOCK_STREAM)。这里因为使用的都是默认值,所以可以省略掉。
而如果希望初始化一个UDP类型的Socket,则可以使用如下语句。
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

 

2.socket常用函数

服务端:

bind() :由服务端socket调用,将之前穿件的socket与指定IP和端口绑定。如使用socket套接字绑定本机8888端口:

s.bind((‘127.0.0.1’, 8888))

 

listen():开启监听模式,可指定最大连接数量,一般设置为5.如

s.listen(5)

 

accept():接收连接,一般是阻塞态。接收TCP连接并返回(conn, address),其中conn是新的套接字对象,可以用来接收和发送数据;address是连接客户端的地址。

 

客户端:

connect():连接服务端,参数为(hostname, port)。如

s.connect(("127.0.0.1", 8888))

 

服务端和客户端通用函数:

send():用于在使用TCP发送数据。完整形式为 send(string[,flag]) ,返回值是发送字节的数量

sendall() : 与send()函数类似,但可以完整发送TCP数据。将string中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据。成功返回None,失败则抛出异常。

s.sendall(bytes("Hello,My Friend!",encoding="utf-8"))

recv():接收数据,完整形式为 recv(bufsize[,flag])。数据以字符串形式返回,bufsize表示最多可以接收的数量。flag一般不会使用。

obj.recv(1024)

sendto():使用UDP发送数据,完整的形式为 sendto(string[,flag],address),返回值是发送的字节数。address是形式为

(IP,port)的元祖,指定远程地址.

recvfrom():UDP专用接收数据,返回数据远端的IP地址和端口,但返回值是(data,address)。

其中 data是包含接收数据的字符串, address是发送数据的套接字地址.

close():关闭socket

 

 

 

你可能感兴趣的:(socket)