import json
import socket
import threading
import logging
thislist = []
thisneednum = {}
class ChatUdpMain:
def __init__(self):
#其他原有逻辑 begin
#其他原有逻辑 end
# 1.创建socket套接字 收
self.udp_socket_receive = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # AF_INET表示使用ipv4,默认不变,SOCK_DGRAM表示使用UDP通信协议
# 2.绑定端口port 收
local_addr_receive = ("127.0.0.1", 45678) # 默认本机任何ip ,指定端口号45678,用于接收数据
self.udp_socket_receive.bind(local_addr_receive) # 绑定端口
# 1.创建socket套接字 发
self.udp_socket_send = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # AF_INET表示使用ipv4,默认不变,SOCK_DGRAM表示使用UDP通信协议
# 2.绑定端口port 发
local_addr_send = ("127.0.0.1", 45671) # 默认本机任何ip,初始化使用,实际45671没有用
self.udp_socket_send.bind(local_addr_send) # 绑定端口
self.start()
self.thislist = thislist
self.thisneednum = thisneednum
def close(self):
try:
self.udp_socket_send.close()
self.udp_socket_receive.close()
except Exception as e:
logging.info(e)
def send(self, val: str):
try:
data = str.encode(str(val))
self.udp_socket_send.sendto(data, ("127.0.0.1", 45679)) # 默认本机任何ip ,45679是发数据的端口
except Exception as e:
logging.info(e)
# 开启线程
def start(self):
# 启动新线程接收数据
threading.Thread(target=self._recv, name='recv').start()
#接收qt发来的实时数据
def _recv(self):
while 1:
try:
self.recevalue = self.udp_socket_receive.recv(5000)
print("收到数据 ")
print(self.recevalue)
try:
i = 1
for k, v in json.loads(self.recevalue).items():
if k in self.thislist:
self.thisneednum[i] = v
i += 1
print("数据解析成功")
self.jisuan(self.thisneednum)
except ValueError:
print("ValueError")
except Exception as e:
logging.info(e)
def jisuan(self, d: dict):
for i in self.thisneednum:
print(self.thisneednum[i])
#这里就是计算
#得到结果
# JSON 字符串
json_string = '{"Type": "PCA","name": "Kyrie", "age": 31}'
# 解析 JSON 字符串
self.data = json.loads(json_string)
self.data = json.dumps(self.data)
# 给qt发结果
self.send(self.data)
#self.close()
def needcs():
with open("config-PCA.ini", "r") as f:
str = f.read()
strlist = str.split(',')
for item in strlist:
thislist.append(item)
#主函数
def main():
needcs()
chatUdp = ChatUdpMain()
if __name__ == '__main__':
main()
python udp双向通信
紫色_麦迪2024-06-04 16:41
相关推荐
_.Switch23 分钟前
Python 自动化运维持续优化与性能调优J不A秃V头A29 分钟前
Python爬虫:获取国家货币编码、货币名称阿斯卡码2 小时前
jupyter添加、删除、查看内核埃菲尔铁塔_CV算法4 小时前
图像算法之 OCR 识别算法:原理与应用场景封步宇AIGC5 小时前
量化交易系统开发-实时行情自动化交易-3.4.2.Okex行情交易数据封步宇AIGC5 小时前
量化交易系统开发-实时行情自动化交易-2.技术栈love_and_hope6 小时前
Pytorch学习--神经网络--完整的模型训练套路在人间负债^6 小时前
基于标签相关性的多标签学习python1567 小时前
使用YOLOv9进行图像与视频检测狂奔solar7 小时前
DQN强化训练agent玩是男人就下xx层小游戏