IPv6中的RAW套接字UDP多播

编程入门 行业动态 更新时间:2024-10-28 08:22:02
本文介绍了IPv6中的RAW套接字UDP多播的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我从UDP嗅探器的多播接收数据,但仅在IPv4中. 我的代码看起来像这样,

i receive data from multicast for my UDP sniffer, but only in IPv4. My code looks like this,

try: s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_UDP) except socket.error as msg: print('Socket could not be created. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]) sys.exit() mreq = struct.pack("4sl", socket.inet_aton('239.255.11.3'), socket.INADDR_ANY) # receive a packet s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) packet = s.recvfrom(65000)

但是我仅在设置IPv4地址时才接收数据,并且我也希望从IPv6多播地址接收数据. 对于任何想法,我将深表感激,对于我的英语,我深表歉意. ;-)

But i am receiving data only when i set IPv4 address, and i want also receive from IPv6 multicast address. I will be really grateful for any ideas and sorry for my english. ;-)

推荐答案

此示例在Windows中的FF02 :: 158(IoTivity UDP CoAP)上获得多播

this example gets a multicast on FF02::158 (IoTivity UDP CoAP) in Windows

import socket import struct address = ('', 5683) interface_index = 0 # default sock = socket.socket(family=socket.AF_INET6, type=socket.SOCK_DGRAM) sock.bind(address) for group in ['ff02::158']: # multiple addresses can be specified sock.setsockopt( 41, # socket.IPPROTO_IPV6 = 41 - not found in windows 10, bug python socket.IPV6_JOIN_GROUP, struct.pack( '16si', socket.inet_pton(socket.AF_INET6, group), interface_index ) ) while True: data, sender = sock.recvfrom(1500) while data[-1:] == '\0': data = data[:-1] print(str(sender) + ' ' + repr(data))

更多推荐

IPv6中的RAW套接字UDP多播

本文发布于:2023-10-24 08:18:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1523422.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:RAW   UDP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!