demo:
#!/usr/bin/env python3
# coding=utf-8
import socket
import threading
class udp_server_thread(threading.Thread):
def __init__(self, name):
super().__init__()
self.name = name
def run(self) -> None:
print("+server run", self.name)
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(("192.168.1.30", 4321))
data, client_address = server.recvfrom(10)
print("+server receive:", data.decode())
server.sendto("server received".encode(), client_address)
server.close()
print("+server closed")
class udp_client_thread(threading.Thread):
def __init__(self, name):
super().__init__()
self.name = name
def run(self) -> None:
print("-client run", self.name)
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# client.bind(("192.168.1.30", 3333))
client.sendto("HELLO".encode(), ("192.168.1.30", 4321))
data = client.recv(50)
print("-response:", data.decode())
client.close()
print("-client closed")
if __name__ == "__main__":
server_th = udp_server_thread("SERVER")
client_th = udp_client_thread("CLIENT")
server_th.start()
client_th.start()
server_th.join()
client_th.join()
print("main end")
运行结果: