1.UDP协议简介
UDP,用户数据报传输协议,它位于TCP/IP协议的传输层,是一种无连接的协议,它发送的报文不能确定是否完整地到达了另外一端。
2.python创建UDP服务器
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # udp协议
ip_port = ('ip地址',端口号)
server.bind(ip_port)
#服务器接收数据
data, client_addr = server.recvfrom(BUFSIZE)
#注意:data数据类型为byte数组
if len(data) > 0:
#服务器发送数据
server.sendto(data.upper(), client_addr)
3.python创建UDP客户端
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # udp协议
ip_port = ('ip地址',端口号)
#客户端发送数据
client.sendto(msg, ip_port)
#客户端接收数据
data, server_addr = client.recvfrom(BUFSIZE)
#注意:data数据类型为byte数组
4.结果运行实例
客户端界面
服务器界面
5.总结
(1)基于UDP通讯的服务器与客户端,可创建子线程去响应接收消息与发送消息。
(2)子线程要更新主线程中控件变量的值时,可采用消息传递机制。子线程中修改主线程的变量,主线程读取变量并绘制。
# 关键:继承QThread
class Server_RunThread(QThread):
signal = pyqtSignal(str)
def __init__(self,parent = None):
super().__init__(parent)
def run(self):
while True:
data, client_addr = server.recvfrom(BUFSIZE)
if len(data) > 0:
server.sendto(data.upper(), client_addr)
self.signal.emit(str(data))
# 创建线程
serverThread = Server_RunThread()
serverThread.signal.connect('线程执行的方法')