首页 > 技术文章 > python socket常用接口说明

briskzou 2019-12-22 23:40 原文

一、服务端

1、创建socket对象

  socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)

  AF_INET:IPv4协议

  SOCK_STREAM: 字节流套接字

  返回值:非负整数,记为套接字表述符

 2、socket绑定地址

  socket.bind((host,port))

  把一个本地协议地址赋予一个套接字,这个地址不能是已被其他的socket绑定了的。

3、监听

  socket.listen(5)

  使得socket可以接受连接。设置最大连接数为5,这个数值可以自行设置,最小值为0

4、接受连接

  conn,addr=socket.accept()

  接受一个连接,socket必须已经绑定了一个地址,并且正在监听连接。

返回值是(conn,address),其中conn是一个新的socket对象,用于在这个连接上收发数据。address是绑定在这个socket连接的另一端的地址。

5、接收数据

  conn.recv(bufsize)

  从socket中接受数据,返回值接收的数据,数据类型是bytes对象。一次性接收到的最大数据量为bufsize。在网络或者硬件不够好的情况下,收到的数据量可能小于bufsize。

6、发送数据

  conn.send(bytes)

   发送数据到已连接到远程地址的socket。返回值是已发送的字节数。返回值可能小于需要发送的字节数。应用程序负责将所有的数据发送出去,如果有些数据没有被发送,应用程序需要把剩余的数据再次发送出去。

  conn.sendall(bytes)

  接口负责将数据全部发送到远程地址的socket上。如果成功返回None,失败则抛出异常。

二、客户端

1、创建socket对象

  socket.socket(socket.AF_INET.socket.SOCK_STEAM)

  与服务端创建socket对象相同

2、socket.connect((host,port))

  通过地址连接到远程的socket

3、接收数据

  socket.recv()

  同服务端的recv()

4、发送数据

  socket.send()

  同服务端的send()

  socket.sendall()

  同服务端的sendall()

推荐阅读