嗯哼哼哼 2021-03-31 09:33 采纳率: 0%
浏览 143
已结题

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进制格式的字节流,收到的是如下类型的:

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

  • 写回答

3条回答 默认 最新

  • CSDN专家-孙老师 2021-03-31 22:20
    关注

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

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

    评论

报告相同问题?

悬赏问题

  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音