我已经看了Python的socket模块,想尝试一些东西。但不幸的是,我甚至无法接收一些数据(总是在recvfrom()上引发socket.timeout)。这是当前的状态:
import socket
connection = socket.socket(proto = socket.IPPROTO_ICMP, type = socket.SOCK_RAW)
connection.settimeout(1)
connection.sendto(b'', ('8.8.8.8', 80))
connection.recvfrom(1)
connection.close()
我尝试从此服务器收到一个简单的回复失败了。也许有人可以告诉我如何做到这一点。
答案 0 :(得分:0)
ICMP数据包几乎不是空字节串。像许多经过深思熟虑的数据包类型一样,它包含一个标题和一些控制消息。以下是您可以使用create your own ICMP
packet using the struct
module的一些资源,以及一些文档(互联网上有更多可用资源)about how the packet is constructed。