源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

python检测远程udp端口是否打开的方法

  • 时间:2022-02-08 07:19 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:python检测远程udp端口是否打开的方法
本文实例讲述了python检测远程udp端口是否打开的方法。分享给大家供大家参考。具体实现方法如下:
[u]复制代码[/u] 代码如下:
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]))
希望本文所述对大家的Python程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部