UDP通信程序练习 按照下面的要求实现程序 UDP发送数据:数据来自于键盘录入,直到输入的数据是886,发送数据结束UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收 改写该代码,实现一个简易的聊天室
时间: 2024-05-15 22:19:16 浏览: 193
UDP 实现聊天程序
UDP发送数据代码:
```python
import socket
# 创建UDP套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
# 从键盘获取数据
data = input("请输入要发送的数据(输入886结束发送):")
if data == "886":
break
# 发送数据
udp_socket.sendto(data.encode(), ("localhost", 8888))
# 关闭套接字
udp_socket.close()
```
UDP接收数据代码:
```python
import socket
# 创建UDP套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定端口
udp_socket.bind(("localhost", 8888))
while True:
# 接收数据
data, addr = udp_socket.recvfrom(1024)
# 打印接收到的数据
print("接收到来自{}的数据:{}".format(addr, data.decode()))
# 关闭套接字
udp_socket.close()
```
简易聊天室代码:
```python
import threading
import socket
# 创建UDP套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定端口
udp_socket.bind(("localhost", 8888))
def send_msg():
while True:
# 从键盘获取数据
data = input("请输入要发送的数据(输入886结束发送):")
if data == "886":
break
# 发送数据
udp_socket.sendto(data.encode(), ("localhost", 8888))
def recv_msg():
while True:
# 接收数据
data, addr = udp_socket.recvfrom(1024)
# 打印接收到的数据
print("接收到来自{}的数据:{}".format(addr, data.decode()))
# 创建两个线程,分别用于发送和接收数据
t1 = threading.Thread(target=send_msg)
t2 = threading.Thread(target=recv_msg)
# 启动线程
t1.start()
t2.start()
# 等待线程结束
t1.join()
t2.join()
# 关闭套接字
udp_socket.close()
```
阅读全文