python3 socket UDP编程

本文深入解析UDP通信机制,强调其无连接特性及在Python中的应用。介绍Python2与Python3在处理UDP数据时的区别,详细说明数据编码、发送与接收过程。提供客户端与服务端代码示例,帮助读者理解UDP的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

注意:

UDP 不管他是否发送成功,只管发,因此即使服务端没有开启,UDP客户端依然好用

  • python3只能收发二进制数据,需要显式转码,Python2则不需要
  • python2 str 类型和bytes类型是一个类型,不信自己查看一下类型,没区别
data = data.encode(encoding="utf-8") # 转码的方法,data 是str类型
# 转换完成后data就变成了bytes类型了,有一些地方,必须用bytes才可以,
#转换后打印出来如下,返回下面,data本身不变,赋值后改变
b'{"a": "aaaa", "b": "s123d,lo"}'

# 转换回字符串按照下面这样
bytes.decode('utf-8')
  • 发送数据
udpClient.sendto(data,addr) # 发送数据,addr = (IP,端口号) # 元祖形式
  • 接收数据
data,addr = udpClient.recvfrom(bufsize) #接收数据和返回地址,data是二进制bytes类型,要想显示需要解码
print(data.decode(encoding="utf-8"),'from',addr)

 

全部代码演示

  • 客户端代码:

'''
客户端
'''
from socket import *

HOST = '127.0.0.1';PORT = 9999;addr = (HOST,PORT)  # 设置IP、端口号、
s = socket(AF_INET, SOCK_DGRAM) # 建立UDP的socket 这个称之为套接字。
data = 'abc';data = data.encode(encoding="utf-8") # 指定一个字符串,并转换成socket发送的二进制流。
while True:
    s.sendto(data, addr)  # 发送数据
    # data, addr = s.recvfrom(1024)  # 接收数据和返回地址
    print (data.decode(encoding="utf-8"))
    print(addr)
s.close()
  • 服务端代码这里由Python2所写

# coding: utf-8
'''
    # author : zhangjiawei
    # @time : 19-6-20 上午8:55
    # IDE   : PyCharm
    服务端
'''
from socket import *

HOST = '127.0.0.1'
PORT = 9999
'''
只要收到了客户端的请求,那么就会返回固定的话,在创建的时候,
只要使用SOCK_DGRAM即可创建udp的连接,在设置的时候,只要绑定地址和端口即可。
'''
s = socket(AF_INET, SOCK_DGRAM)

s.bind((HOST, PORT))
print '...waiting for message..'
while True:
    data, address = s.recvfrom(1024)
    print data, address,type(data)
    s.sendto('this is the UDP server', address)
s.close()

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值