import socket
import threading
def recv_msg(udp_socket):
while True:
# 1 接收数据
recv_msgs = udp_socket.recvfrom(1024)
# 2 解码
recv_ip = recv_msg[1]
recv_msgs = recv_msg[0].decode("utf-8")
# 显示接收到的数据
print(">>>%s:%s" % (str(recv_ip),recv_msg))
def send_msg(udp_socket):
"""获取键盘数据,并将其发送给对方"""
while True:
# 从键盘获取输入
msg = input("\n请输入要发送的数据:")
# 输入对方的ip地址
dest_ip = input("\n请输入对方的ip地址:")
# 输入对方的端口号
dest_port = input("\n请输入对方的端口号:")
# 发送数据
udp_socket.sendto(msg.encode("utf-8"),(dest_ip, dest_port))
def main():
# 创建套接字
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 绑定本地信息
udp_socket.bind('', 9090)
# 创建一个子线程用来接收数据
t = threading.Thread(target=recv_msg, args=(udp_socket,))
t.start()
# 让主线程用来检测键盘数据并发送
send_msg(udp_socket)
if __name__ == "__main__":
main()