套接字介绍

1.套接字 : 实现网络编程进行数据传输的一种技术手段

2.Python实现套接字编程:import socket

3.套接字分类

  • 流式套接字(SOCK_STREAM): 以字节流方式传输数据,实现tcp网络传输方案。(面向连接--tcp协议--可靠的--流式套接字)
  • 数据报套接字(SOCK_DGRAM):以数据报形式传输数据,实现udp网络传输方案。(无连接--udp协议--不可靠--数据报套接字)

tcp套接字

服务端流程

Python网络编程—socket套接字编程(TCP)

1.创建套接字

sockfd=socket.socket(socket_family=AF_INET,socket_type=SOCK_STREAM,proto=0)

  • 功能:创建套接字
  • 参数: socket_family 网络地址类型 AF_INET表示ipv4
  •     socket_type 套接字类型 SOCK_STREAM(流式) SOCK_DGRAM(数据报)
  •     proto 通常为0 选择子协议
  • 返回值: 套接字对象

2.绑定地址

本地地址 : 'localhost' , '127.0.0.1'
网络地址 : '172.40.91.185'
自动获取地址: '0.0.0.0'

sockfd.bind(addr)

  • 功能: 绑定本机网络地址
  • 参数: 二元元组 (ip,port) ('0.0.0.0',8888)

Python网络编程—socket套接字编程(TCP)

3.设置监听

sockfd.listen(n)

  • 功能 : 将套接字设置为监听套接字,确定监听队列大小
  • 参数 : 监听队列大小

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

connfd,addr = sockfd.accept()

  • 功能: 阻塞等待处理客户端请求
  • 返回值: connfd 客户端连接套接字
  •     addr 连接的客户端地址

5.消息收发

data = connfd.recv(buffersize)

  • 功能 : 接受客户端消息
  • 参数 :每次最多接收消息的大小
  • 返回值: 接收到的内容

n = connfd.send(data)

  • 功能 : 发送消息
  • 参数 :要发送的内容 bytes格式
  • 返回值: 发送的字节数

6.关闭套接字

sockfd.close()

  • 功能:关闭套接字
tcp服务端流程

客户端流程

Python网络编程—socket套接字编程(TCP)

1.创建套接字

注意:只有相同类型的套接字才能进行通信

2.请求连接

sockfd.connect(server_addr)

  • 功能:连接服务器
  • 参数:元组 服务器地址

3.收发消息

注意: 防止两端都阻塞,recv send要配合

4.关闭套接字

 1 """
 2 重点代码
 3 """
 4 
 5 from socket import *
 6 
 7 # 创建tcp套接字
 8 sockfd = socket() # 参数默认即tcp套接字
 9 
10 # 连接服务端程序
11 server_addr = ("172.40.91.150",8888)  # 服务端地址
12 sockfd.connect(server_addr)
13 
14 while True:
15   # 消息发送接收
16   data = input("Msg>>")
17   # 如果直接回车,则跳出循环
18   if not data:
19     break
20   sockfd.send(data.encode()) # 转换字节串发送
21   data = sockfd.recv(1024)
22   print("Server:",data.decode())
23 
24 sockfd.close()
tcp客户端流程

相关文章:

  • 2022-12-23
  • 2021-09-20
  • 2021-09-18
  • 2021-05-09
  • 2022-03-02
  • 2021-06-02
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-08-31
  • 2021-05-20
  • 2021-04-17
  • 2022-12-23
  • 2021-09-17
相关资源
相似解决方案