Advertisement

Python 网络编程,UDP,发送接收数据。socket套接字

阅读量:

demo.py(UDP发送数据):

复制代码
 import socket  # 导入socket模块

    
  
    
 def main():
    
     # 创建一个udp套接字
    
     udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
     
    
     # 绑定本机ip和端口号 (发送数据时,如果不绑定,系统会随机分配端口号。接收数据时,一般需要手动绑定ip和端口)
    
     udp_socket.bind(("", 7890))  # 空字符串""表示本地ip
    
  
    
     # 从键盘获取数据
    
     send_data = input("请输入要发送的数据:")
    
  
    
     # 可以使用套接字接收和发送数据
    
     # udp_socket.sendto(b"hahahah", ("192.168.33.53", 7788))  # 字符串前的b表示bytes字节类型
    
     udp_socket.sendto(send_data.encode("utf-8"), ("192.168.33.53", 7788))  # encode将字符串转成bytes类型
    
  
    
     # 关闭套接字
    
     udp_socket.close()
    
 	
    
  
    
 if __name__ == "__main__":
    
     main()

demo.py(UDP接收数据):

复制代码
 import socket

    
  
    
 def main():
    
     # 1. 创建套接字
    
     udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
     # 2. 绑定本机ip和端口
    
     udp_socket.bind(("", 7788))  # 绑定本机的ip和端口(元组类型)  ""表示本机ip
    
     # 3. 用套接字接收数据
    
     recv_data = udp_socket.recvfrom(1024)   # 1024表示本次接收的最大字节数。会阻塞代码,直到接收到数据
    
     # recv_data这个变量中存储的是一个元组 (接收到的数据,(发送方的ip, port))
    
     recv_msg = recv_data[0]  # 字节类型 存储接收到的数据
    
     send_addr = recv_data[1]  # 元组 存储发送方的地址和端口信息
    
     # 4. 打印接收到的数据
    
     # print(recv_data)  # 元组 (接收到的数据,(发送方的ip, port))
    
     print("%s:%s" % (str(send_addr), recv_msg.decode("gbk")))  # decode将字节转成字符串
    
     # 5. 关闭套接字
    
     udp_socket.close()
    
  
    
 if __name__ == "__main__":
    
     main()

全部评论 (0)

还没有任何评论哟~