首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python订阅UDP多播

使用Python订阅UDP多播
EN

Stack Overflow用户
提问于 2015-09-04 16:33:42
回答 1查看 3.3K关注 0票数 1

here已经详细介绍了这个主题,但不幸的是,我仍然遇到了一些麻烦。

我正在尝试订阅来自我网络上的windows box的运动捕捉数据流。mo-cap服务器通过我的网络进行广播,我可以在我的OS机器(“目标”)上使用wireshark获取数据。我看到从原始ip 204.102.224.2 (windows)通过UDP在239.255.42.99上广播到端口1511的消息正在根据需要传出。

我的python代码如下:

代码语言:javascript
复制
PORT = 1511
MULTICAST_ADDRESS = '239.255.42.99'
SOCKET_BUFSIZE = 1024

datasock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
datasock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
datasock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
datasock.bind((MULTICAST_ADDRESS, PORT))
mreq = struct.pack("=4sl", socket.inet_aton(MULTICAST_ADDRESS), socket.INADDR_ANY)
datasock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 32)
datasock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_LOOP, 1)
datasock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, SOCKET_BUFSIZE)
datasock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)

while 1:
    data = datasock.recv(rx.MAX_PACKETSIZE)
    packet = rx.unpack(data, version=version)
    if type(packet) is rx.SenderData:
        version = packet.natnet_version
        #print("NatNet version received:", version)
    if type(packet) in [rx.SenderData, rx.ModelDefs, rx.FrameOfData]:
        packet_dict = packet._asdict()
        all_bodies = packet_dict['rigid_bodies']
        for body in all_bodies:
            contortion = body._asdict()['orientation']
            euler = Quat([elem for elem in contortion]).equatorial

我认为对于我目前的问题,忽略循环中的一些代码是安全的,因为其中一些代码来自我正在使用的助手库(optirx)。请注意,我并没有从所有选项开始,但决定将它们全部包括在内,以了解哪些应该留下来,哪些可以去掉。我尝试过各种组合和排列。我使用的是OS X 10.10.3

EN

回答 1

Stack Overflow用户

发布于 2015-09-07 08:07:53

问题出在这里:

代码语言:javascript
复制
datasock.bind((MULTICAST_ADDRESS, PORT))

您不应该将套接字绑定到多播地址。您应该将它绑定到'0.0.0.0'。使用IP_ADD_MEMBERSHIPsetsockopt调用负责加入多播组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32393580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档