当前位置:  开发笔记 > 编程语言 > 正文

struct.pack Python中的4sL格式是什么

如何解决《struct.packPython中的4sL格式是什么》经验,为你挑选了1个好方法。

我是python的新手,我的第一个程序是编写接收组播数据包的代码.

我得到了这个代码,例如各地的类似代码.

import socket
import struct

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('', 4242))
mreq = struct.pack("=4sl", socket.inet_aton("224.51.105.104"), socket.INADDR_ANY)

sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) 
while True:
   print sock.recv(10240)

我无法弄清楚这段代码.特别是4sl部分



1> Francis Avil..:

阅读的struct模块文档.

=表示本机字节顺序,标准大小,没有对齐.4s表示"四个字母的字符串"(四个字符串连接成一个字节串),l表示"签名长",在这种情况下是一个四字节的int.

至于其余的代码,这是设置一个绑定到端口4242的多播udp监听mreq器.这个结构(C代码):

struct ip_mreq {
    struct in_addr imr_multiaddr;   /* IP multicast address of group */
    struct in_addr imr_interface;   /* local IP address of interface */
};

此代码存储该数据mreq,传递给setsockopt该操作系统以通知操作系统您对该多播地址中的数据感兴趣.

谷歌搜索发布了关于IP多播的本教程.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有