1 # -*- coding: utf-8 -*- 2 #2019-11-24 3 4 import socket 5 6 def recv(): 7 udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 8 #socket.AF_INET 9 # ip地址和端口号,ip一般不用写,表示本机的任何一个ip 10 local_addr=('',7788) 11 udp_socket.bind(local_addr) 12 while True: 13 print("OK! ") 14 #等待接收方发送的数据,recvfrom()返回一个list,list[0]是消息,list[1]是发送方的ip和port 15 recv_data=udp_socket.recvfrom(1024) #1024表示本次接收的最大字节数 16 recv_msg=recv_data[0] 17 recv_addr=recv_data[1] 18 #显示收到的数据 19 if recv_msg.decode("gbk")=="exit": 20 print("通信结束!") 21 return 22 print("%s: %s "%(str(recv_addr),recv_msg.decode("gbk"))) 23 print(type(recv_addr)) 24 #关闭套接字 25 udp_socket.close() 26 27 if __name__=='__main__': 28 recv()
1 # -*- coding: utf-8 -*- 2 import socket 3 4 def send(): 5 #创建一个套接字 6 udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 7 # AF_INET, SOCK_DGRAM 表示使用UDP套接字 8 #准备接收方的地址 9 ihdu="10.66.73.201" 10 local_addr=('',9999) 11 dest_tuple=(ihdu,7788) 12 udp_socket.bind(local_addr) #绑定套接字,表示接收信息的ip和port 13 while True: 14 #从键盘获取数据 15 send_data=input("请输入您要发送的内容: ") 16 #发送数据到指定电脑的指定程序中,网络通信中需要使用字节型数据,所以使用encode('utf-8)') 17 udp_socket.sendto(send_data.encode("utf-8"),dest_tuple) 18 if send_data=='exit': 19 print("通信结束!") 20 return 21 #关闭套接字 22 udp_socket.close() 23 24 if __name__ == "__main__": 25 send()