任务说明:
- 编写一个有2个线程的程序
- 线程1用来接收数据然后显示
- 线程2用来检测键盘数据然后通过udp发送数据
import socket
import threading
# 发送数据函数
def send_msg(udp_socket):
send_content = input("请输入您要发送的数据:")
send_data = send_content.encode("gbk")
dest_ip = input("请输入对方的ip地址:")
dest_port = int(input("请输入对方的端口号:"))
# 发送数据
udp_socket.sendto(send_data, (dest_ip, dest_port))
# 接收数据函数
def recv_msg(udp_socket):
while True:
# 接收数据
recv_data, ip_port = udp_socket.recvfrom(1024)
# 解码数据
recv_content = recv_data.decode("gbk")
print(recv_content, ip_port)
if __name__ == '__main__':
# 创建socket
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定端口
udp_socket.bind(("", 8080))
# 创建接收数据的线程
recv_thread = threading.Thread(target=recv_msg, args=(udp_socket,))
# 守护主线程
recv_thread.setDaemon(True)
recv_thread.start()
while True:
option = input("请输入功能选项1.发送 2.退出:")
if option == '1':
send_msg(udp_socket)
elif option == '2':
break
# 关闭socket
udp_socket.close()