zoukankan      html  css  js  c++  java
  • python检测远程udp端口是否打开的代码

    研发过程,把开发过程较好的代码收藏起来,如下的代码内容是关于python检测远程udp端口是否打开的代码,希望对各朋友有较大帮助。
    import socket
    import threading
    import time
    import struct
    import Queue

    queue = Queue.Queue()

    def udp_sender(ip,port):
    try:
    ADDR = (ip,port)
    sock_udp = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    sock_udp.sendto("abcd...",ADDR)
    sock_udp.close()
    except:
    pass

    def icmp_receiver(ip,port):
    icmp = socket.getprotobyname("icmp")
    try:
    sock_icmp = socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)
    except socket.error, (errno, msg):
    if errno == 1:
    # Operation not permitted
    msg = msg + (
    " - Note that ICMP messages can only be sent from processes"
    " running as root."
    )
    raise socket.error(msg)
    raise # raise the original error
    sock_icmp.settimeout(3)
    try:
    recPacket,addr = sock_icmp.recvfrom(64)
    except:
    queue.put(True)
    return
    icmpHeader = recPacket[20:28]
    icmpPort = int(recPacket.encode('hex')[100:104],16)
    head_type, code, checksum, packetID, sequence = struct.unpack(
    "bbHHh", icmpHeader
    )
    sock_icmp.close()
    if code == 3 and icmpPort == port and addr[0] == ip:
    queue.put(False)
    return

    def checker_udp(ip,port):

    thread_udp = threading.Thread(target=udp_sender,args=(ip,port))
    thread_icmp = threading.Thread(target=icmp_receiver,args=(ip,port))

    thread_udp.daemon= True
    thread_icmp.daemon = True

    thread_icmp.start()
    time.sleep(0.1)
    thread_udp.start()

    thread_icmp.join()
    thread_udp.join()
    return queue.get(False)

    if __name__ == '__main__':
    import sys
    print checker_udp(sys.argv[1],int(sys.argv[2]))





  • 相关阅读:
    Java对MongoDB的CRUD
    MongoDB数据库基本用法
    MySQL order by 排序结果不正确
    Linux shell 脚本 eq,ne,le,ge,lt,gt意义
    Linux shell 命令运行符 &,;,&& 区别
    Linux netstat 命令详解
    Linux ss 命令详解
    Linux sort 命令详解
    Linux sed 命令详解
    Linux xargs 命令详解
  • 原文地址:https://www.cnblogs.com/javahouse/p/11373152.html
Copyright © 2011-2022 走看看