param_service/socket_server.py
2025-02-21 13:56:29 +08:00

76 lines
2.5 KiB
Python

import json
import sys
from PySide6.QtCore import QCoreApplication, QByteArray, Slot
from PySide6.QtNetwork import QTcpServer, QTcpSocket, QHostAddress
from PySide6.QtCore import Signal
from param_manager import ParamManager
class TcpServer(QCoreApplication):
def __init__(self, host, port):
super().__init__(sys.argv)
# 创建一个 TCP 服务器对象
self.server = QTcpServer(self)
self.host = host
self.port = port
# 连接信号,新的客户端连接时触发
self.server.newConnection.connect(self.on_new_connection)
self.param_manager = ParamManager()
# 绑定并开始监听指定的地址和端口
if not self.server.listen(QHostAddress(self.host), self.port):
print(f"Server could not start on {self.host}:{self.port}")
sys.exit(1)
print(f"Server started on {self.host}:{self.port}")
@Slot()
def on_new_connection(self):
# 获取客户端连接的 socket 对象
client_socket = self.server.nextPendingConnection()
# 连接信号
client_socket.readyRead.connect(lambda: self.on_ready_read(client_socket))
client_socket.disconnected.connect(lambda: self.on_disconnected(client_socket))
print(f"New connection from {client_socket.peerAddress().toString()}:{client_socket.peerPort()}")
# 发送欢迎消息给客户端
# client_socket.write(b"Hello from server!")
client_socket.flush() # 确保数据已发送
# print("Welcome message sent to client.")
@Slot()
def on_ready_read(self, client_socket: QTcpSocket):
# 读取客户端发送的数据
data = client_socket.readAll()
print(f"Received from client: {data.data().decode()}")
self.request_process(data.data().decode())
# # 发送响应给客户端
# response = "Server has received your message."
# client_socket.write(response.encode())
# client_socket.flush()
# print(f"Sent to client: {response}")
@Slot()
def on_disconnected(self, client_socket: QTcpSocket):
print(f"Connection from {client_socket.peerAddress().toString()}:{client_socket.peerPort()} closed.")
client_socket.deleteLater() # 清理套接字资源
def request_process(self, data_string):
# try:
# data_obj = json.loads(data_string)
print(data_obj["payload"])
# except Exception as e:
# print(e)
if __name__ == "__main__":
app = TcpServer("127.0.0.1", 1234)
sys.exit(app.exec())