Python - socket.recvfrom()获取整个IP / UDP数据包?

时间:2016-07-21 12:13:08

标签: python sockets udp ipv6

有没有办法使用socket.recvfrom(buf)获取所有IP和UPD数据? 具体来说,我想知道udp头(源端口,目标端口,长度,应用程序数据)以及ip细节:它来自哪个IP,它发送到哪个地址?

段:

addrinfo = socket.getaddrinfo(MULTICAST_ADDR, None)[0]
sock = socket.socket(addrinfo[0], socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('', DEST_PORT))

#Join Multicast grp.
group = socket.inet_pton(addrinfo[0], addrinfo[4][0])
mreq = group + struct.pack('@I', 0)
sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_JOIN_GROUP, mreq)

while True:
    udp_data,ip_sender = sock.recvfrom(4000)
    #Only returns udp data field and ip of sender

我在Windows上,并使用socket.SOCK_RAW挂起(?)有没有解决方法?

1 个答案:

答案 0 :(得分:0)

使用

SqlCommand comm;
// other codes
int numberOfRecords = comm.ExecuteNonQuery();

加入组播之前grp似乎有效!