socket套接字编程

185 阅读2分钟

套接字介绍

  • 1.套接字:实现网络编程进行数据传输的一种技术手段
  • 2.Python:实现套接字编程:import socket
  • 3.套接字分类
  1. 流式套接字(SOCK STREAM):以字节流方式传输数据,实现tcp网络传输方案。(面向连接-tcp协议-可靠的-流式套接字)
  2. 数据报套接字(SOCK DGRAM):以数据报形式传输数据,实现udp网络传输方案。(无连接-udp协议-不可靠-数据报套接字)

TCP套接字编程

服务端流程

image.png

image.png

常用函数

1.创建套接字
socket.socket([family[, type[, proto]]])
  • family: 套接字家族可以是 AF_UNIX 或者 AF_INET
  • type: 套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAMSOCK_DGRAM
  • protocol: 一般不填默认为0.
2.绑定地址
  • 本地地址:localhost','127.0.0.1'
  • 网络地址:172.40.91.185 ipconfig获得
  • 自动获取地址:'0.0.0.0

image.png

sockfd.bind(addr)
  1. 功能:绑定本机网络地址
  2. 参数:二元元组(ip,port)('0.0.0.0',8888) IP:字符串 端口:整形
3.设置监听

套接字无法连接客户端,监听套接字可以同时连接很多客户端,但连接过程需要一个一个的连接

sockfd.listen(n)
  • 功能:将套接字设置为监听套接字,确定监听队列大小
  • 参数:监听队列大小

4.等待处理客户端连接请求

connfd,addr=sockfd.accept() 功能:阻塞等待处理客户端请求

返回值:

  1. connfd 客户端连接套接字
  2. addr 连接的客户端地址

5.消息收发

connfd是上面的函数的返回值

data =connfd.recv(buffersize)
  • 功能:接受客户端消息
  • 参数:每次最多接收消息的大小
  • 返回值:接收到的内容
n=connfd.send(data)
  • 功能:发送消息
  • 参数:要发送的内容 bytes格式(在python3中,所有套接字的收发,必须bytes格式)
  • 返回值:发送的字节数

6.关闭套接字

sockfd.close()
  • 功能:关闭套接字