Python3 x Socket - ICMP Echo request - Почему мой сокет зависает на recv? - PullRequest
0 голосов
/ 11 февраля 2019

Я хочу отправить эхо-запрос с ICMP и сокетом python.Я отправлял пакет.Но моя программа зависает на recv из сокета.Почему моя розетка повешена?ОС Windows10.Запустите терминал в режиме администратора.

# -*- coding: utf-8 -*-
import socket
import struct


def ping(host, port):
    with socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP) as sock:
        sock.connect((host, port))
        sock.settimeout(30)
        icmp_message = struct.pack('!BBHHH', 8, 0, 8, 0, 0)
        packet = icmp_message
        print('send packet...')
        sock.sendall(packet)
        print('recv...')
        data = sock.recv(1024)


def main():
    ping('192.168.0.1', 80)


if __name__ == '__main__':
    main()
...