0
socket.recvfrom(buf)
を使用してすべてのIPおよびUPDデータを取得する方法はありますか? 具体的には、udpヘッダー(送信元ポート、宛先ポート、長さ、アプリケーションデータ)とIPの詳細を知りたいのですが、どのipから来たのですか。Python - socket.recvfrom()は完全なIP/UDPパケットを取得しますか?
スニペット:(?)は、Windows上の
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
イム、およびsocket.SOCK_RAWのハングを使用して、任意の回避策はありますか?マルチキャストGRPに参加する前に
sock = socket.socket(socket.AF_INET6, socket.SOCK_RAW)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('', DEST_PORT))
sock.setsockopt(socket.IPPROTO_IPV6, socket.IP_HDRINCL, 1)
を使用して
はい、正しく、 'RAW_SOCKET'を使用する必要があります。 – dsgdfg
'recvfrom'から返される2番目の値は、実際には送信者のIPアドレスとポートを含むタプルです(例:'( '192.168.4.135'、37754))。 –