当前位置: 首页 > news >正文

Python和PySide6实现分别实现tcp通信。

通用界面代码:ui.py


#tcp通讯/ui.py
from PySide6.QtWidgets import *class Window(QWidget):def __init__(self):super().__init__()self.init_ui()def init_ui(self):self.plainTextEdit = QPlainTextEdit(self)self.plainTextEdit.setGeometry(20,20,200,200)def add_str(self,meg:str):self.plainTextEdit.appendHtml(f"<p>{meg}</p>")scrollbar = self.plainTextEdit.verticalScrollBar()if scrollbar.isVisible():scrollbar.setSliderPosition(scrollbar.maximum())

Python实现TCP 服务端代码:

import socket
import sys
import threading
from PySide6.QtWidgets import *
from ui import Windowclass TCP_Server_Python:def __init__(self):self.ui = Window()self.ui.show()self.socket_thread = threading.Thread(target=self.do_job, daemon=True)self.socket_thread.start()def do_job(self):with socket.socket() as server:server.bind(('0.0.0.0',6002))server.listen(10)print("服务器已经启动。。。。。。。")conn, _server = server.accept()while True:print("已经连接")data = b''try:data = conn.recv(1024)except Exception as e:passelse:if data == b'\x01':print("关闭")breakself.ui.add_str(data)if __name__ == '__main__':# 创建一个应用程序实例app = QApplication(sys.argv)# 创建一个顶层窗口window = TCP_Server_Python()# 进入应用程序的主循环,等待事件处理sys.exit(app.exec())

Pyside6中QTcpSocket实现代码:

import sys
from PySide6.QtWidgets import *
from PySide6.QtCore import *
from ui import Window
from PySide6.QtNetwork import QTcpServer,QHostAddress,QTcpSocketclass Qt_Tcp_Server:def __init__(self):self.ui = Window()self.ui.show()self.tcp_servet = QTcpServer()self.tcp_servet.listen(QHostAddress.SpecialAddress.Any,port=6002)self.ui.add_str("...服务器已经启动")self.tcp_servet.newConnection.connect(self.on_new_connection)#连接信号@Slot()def on_new_connection(self):'''新的连接槽函数'''second_socket:QTcpSocket = self.tcp_servet.nextPendingConnection()client_ip = second_socket.peerAddress().toString().split(":")[-1]client_port = second_socket.peerPort()msg = f"新连接的客户端ip地址为:{client_ip},端口号:{client_port}"self.ui.add_str(msg)second_socket.readyRead.connect(lambda :self.on_second_socket_ready_read(second_socket))@Slot()def on_second_socket_ready_read(self,socket:QTcpSocket):'''当有数据时触发该函数'''# data = socket.readAll() #全部读取#读取一行while socket.bytesAvailable()>0:line_byte = socket.readLine()self.ui.add_str(line_byte)if __name__ == '__main__':app = QApplication(sys.argv)window = Qt_Tcp_Server()sys.exit(app.exec())


http://www.mrgr.cn/news/15154.html

相关文章:

  • SpringBoot 实战:SpringBoot整合Flink CDC,实时追踪mysql数据变动
  • SprinBoot+Vue餐厅点餐系统的设计与实现
  • 深度学习速通系列:贝叶思SVM
  • 操作系统:哪些函数属于系统调用?
  • DataWhale夏令营:Task2:建模方案解读与进阶
  • 微服务中间件之Nacos-安装篇
  • useeffect和uselayout区别
  • docker安装minio
  • DevOps实现CI/CD实战(三)- 集成Sonar Qube
  • EmguCV学习笔记 VB.Net 7.2 特征点检测
  • webgl入门
  • 最佳实践:Typora+docusaurus完美解决(云笔记+知识库+博客)需求
  • JVM 方法区存放那些内容
  • Redis 安装
  • 绕过后端校验的策略
  • Python Socket 服务:深入解析与使用技巧
  • 【数仓建模过程】Spark数据清洗篇
  • FPGA中的存储器--学习笔记
  • MySQL集群
  • 深度学习基础—迁移学习、多任务学习和端对端学习