创建Python Pinger-Sockets
好的,改变一切,试着问一个更具体的问题 我有两种方法。doOnePing是我使用sendOnePing创建的,它是为帮助我更好地理解套接字而编写的 我试图理解我是否在doOnePing中正确地创建了套接字,我相信我是的,但我不确定我是否遗漏了一些特定的内容,或者是否可以做得更好 谢谢创建Python Pinger-Sockets,python,Python,好的,改变一切,试着问一个更具体的问题 我有两种方法。doOnePing是我使用sendOnePing创建的,它是为帮助我更好地理解套接字而编写的 我试图理解我是否在doOnePing中正确地创建了套接字,我相信我是的,但我不确定我是否遗漏了一些特定的内容,或者是否可以做得更好 谢谢 def sendOnePing(mySocket, destAddr, ID): # Header is type (8), code (8), checksum (16), id (16), sequen
def sendOnePing(mySocket, destAddr, ID):
# Header is type (8), code (8), checksum (16), id (16), sequence (16)
myChecksum = 0
# Make a dummy header with a 0 checksum
# struct -- Interpret strings as packed binary data
header = struct.pack("bbHHh", ICMP_ECHO_REQUEST, 0, myChecksum, ID, 1)
data = struct.pack("d", time.time())
# Calculate the checksum on the data and the dummy header.
myChecksum = checksum(header + data)
# Get the right checksum, and put in the header
if sys.platform == 'darwin':
# Convert 16-bit integers from host to network byte order
myChecksum = htons(myChecksum) & 0xffff
else:
myChecksum = htons(myChecksum)
header = struct.pack("bbHHh", ICMP_ECHO_REQUEST, 0, myChecksum, ID, 1)
packet = header + data
mySocket.sendto(packet, (destAddr, 1)) # AF_INET address must be tuple, not str
# Both LISTS and TUPLES consist of a number of objects
# which can be referenced by their position number within the object.
def doOnePing(destAddr, timeout):
icmp = getprotobyname("icmp")
# SOCK_RAW For more details: http://sock-raw.org/papers/sock_raw
# Fill in start
mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#Fill in end
myID = os.getpid() & 0xFFFF # Return the current process i
sendOnePing(mySocket, destAddr, myID)
delay = receiveOnePing(mySocket, myID, timeout, destAddr)
mySocket.close()
return delay
考虑使用scapy代替ping。通过跑步,您可以轻松获得轻松体验:
pip install scapy
使用此选项,您可以更轻松地ping您在这里提出了很多问题。你需要把这些分开,这样他们才有责任。找到一个你需要帮助的小领域,然后告诉我们,如果你是Python新手,试着做一些简单的事情,而不是像你说的那样去做全面的、令人困惑的计划。好的,是的,我理解……我想我大体上很困惑。如果我问一个关于某个特定方法的特定问题会更好吗?@Zizouz212我理解这些概念,我只是想边学边用,这很有意义!改变了一切,这有助于我理解什么吗?