PyQt5實現UDP通訊

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('線程執行的方法')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章