用socket写一个udp多线程通信
时间: 2023-08-04 20:28:51 浏览: 129
下面是一个基于 Python 的 Socket 实现的 UDP 多线程通信的示例代码:
```
import socket
import threading
# 定义服务器地址和端口号
HOST = '127.0.0.1'
PORT = 8000
# 创建 UDP Socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.bind((HOST, PORT))
def receive_thread():
while True:
data, client_address = server_socket.recvfrom(1024)
print(f'Received message from {client_address}: {data.decode()}')
def send_thread():
while True:
message = input("please input message: ")
server_socket.sendto(message.encode(), (HOST, PORT))
# 创建接收和发送线程
receive_t = threading.Thread(target=receive_thread)
send_t = threading.Thread(target=send_thread)
# 启动线程
receive_t.start()
send_t.start()
# 等待线程结束
receive_t.join()
send_t.join()
# 关闭 Socket
server_socket.close()
```
在上面的代码中,我们首先创建了一个 UDP Socket,并将其绑定到指定的地址和端口上。然后创建了两个线程,一个用于接收消息,另一个用于发送消息。接收线程通过 server_socket.recvfrom() 方法来接收客户端发送的消息,并将其打印出来。发送线程通过 input() 方法读取用户输入的消息,然后通过 server_socket.sendto() 方法将其发送给客户端。
需要注意的是,由于 UDP 是无连接的协议,因此每次发送消息时都需要指定目标地址和端口号。在本示例中,我们将其设置为 HOST 和 PORT。另外,由于是多线程通信,因此需要注意线程安全问题。可以使用锁等机制来保证数据的安全性。
阅读全文