一、楔子

  最近做了一个需求遇到一个坑,归结成一个小问题,其实就是在socket的server端处理client端发来的数据的问题,现将这个问题总结一下,本文将数据在server端以字典的形式存储。

   另外,由于我想做一个动图的演示,所以本文没有用MarkDown写,希望本文的干货能弥补格式带来的不适ε=(´ο`*)))

二、基于原生UDP的实现

  我们这里用“默认字典”去实现数据的构建,基于原生UDP的代码如下:

# -*- coding:utf-8 -*-
import socket
from collections import defaultdict


server = socket.socket(type=socket.SOCK_DGRAM)
server.bind(('127.0.0.1',9002))
print('Listening......')

client_msg = {
    '123':'Naruto',
    '456':'Sasuke',
}

dic_msg = defaultdict(list)

while 1:
    try:
        # 接收
        recv_msg,addr = server.recvfrom(1024)
        recv_msg = recv_msg.decode('utf-8')
        # 这里只切割一次,避免后面的数据还有|符号
        cid = recv_msg.strip().split('|',1)[0]
        msg = recv_msg.strip().split('|',1)[1]
        
        # 默认字典
        dic_msg[client_msg[cid]]
        dic_msg[client_msg[cid]].append(msg)

        # 回复
        server.sendto('收到了'.encode('utf-8'),addr)
        print('消息字典:%s'%(dict(dic_msg)))
    except Exception as e:
        print(e)
Server端

相关文章:

  • 2021-11-09
  • 2021-10-15
  • 2021-08-06
  • 2022-12-23
  • 2022-12-23
  • 2022-03-02
  • 2022-01-07
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-25
  • 2021-08-05
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案