1 # 导入套接字包 2 import socket 3 4 5 def welcome(): 6 print("------欢迎进入UDP聊天器--------") 7 print("1.发送信息") 8 print("2.接收信息") 9 print("0.退出聊天器") 10 11 def send_msg(udp_socket): 12 dest_ip = input("请输入目标ip:") 13 dest_port = int(input("请输入目标端口:")) 14 send_data = input("请输入要发送的内容") 15 # sendto(内容,(目标IP,端口)) 16 udp_socket.sendto(send_data.encode("gbk"), (dest_ip, dest_port)) 17 18 19 def recv_msg(udp_socket): 20 # recvfrom(接收最大字节) 21 rece_data = udp_socket.recvfrom(1024) 22 # 要解码,不然会乱码 23 print("%s:%s" % (rece_data[1], rece_data[0].decode("gbk"))) 24 25 26 def main(): 27 # 创建套接字对象 28 udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 29 # 绑定端口 30 # bing((ip,port)) bind里面是一个元组,第一个放ip 可以为空,第二个是端口 31 udp_socket.bind(('',7788)) 32 while True: 33 # 欢迎菜单 34 welcome() 35 # 选择功能 36 op = input("请输入想要执行的命令:") 37 if op == "1": 38 # 发送信息 39 send_msg(udp_socket) 40 elif op == "2": 41 # 接收信息 42 recv_msg(udp_socket) 43 elif op == "0": 44 break 45 else: 46 print("请选择正确的指令:") 47 # 关闭套接字 48 udp_socket.close() 49 50 if __name__ == '__main__': 51 main()