如何用python方法检测UDP端口

 我来答
neosicifore
2016-09-22 · TA获得超过2258个赞
知道小有建树答主
回答量:446
采纳率:66%
帮助的人:502万
展开全部

如何用python方法检测UDP端口,首先要了解什么是UDP端口及作用。个人理解是:UDP端口是含有网络服务必须的源端口和目的端口信息,用以建立和实现网络传输服务。

至于如何用python方法检测UDP端口呢?参考下边这段网友提供的代码吧。

socket、threading、time、Queue这些是要用到的python方法模块。

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]))

  

Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式