UDP接收多播数据,格式为字节流,但是收到以后存在错误

def recv_msg(udp_socket):
    """接收数据并显示"""
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  # 告诉socket是UDP
    udp_socket.bind(server_address)
    udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 255)
    status = udp_socket.setsockopt(socket.IPPROTO_IP,
                             socket.IP_ADD_MEMBERSHIP,
                             socket.inet_aton(multi_cast_group) + socket.inet_aton('192.168.69.13'))

    global curSpeed, curDis, curLim
    while True:
        recv_msg = udp_socket.recvfrom(60000)
        recv_ip = recv_msg[1]
        recv_msg = recv_msg[0]  # 注意这里的编码如果是windows选择gbk,linux选择utf-8
        print("接收到发送过来的信息:", str(recv_ip), recv_msg)
        speed=struct.unpack('>h',recv_msg[36:38])

本来应该接收16进制格式的字节流,收到的是如下类型的:

明显不对,有没有大佬现身说法,万分感谢!

十六进制数据的发送,要用到struct模块转换为字节流。如果接收到的数据不对,检查一下转换方法是否正确。

对于接收到的数据,用struct中的unpack解包即可。

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632