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


Posted in Python onMarch 14, 2015

本文实例讲述了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]))

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python统计列表中的重复项出现的次数的方法
Aug 18 Python
九步学会Python装饰器
May 09 Python
Python 26进制计算实现方法
May 28 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
Jun 27 Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
Aug 24 Python
python中利用await关键字如何等待Future对象完成详解
Sep 07 Python
Python3多目标赋值及共享引用注意事项
May 27 Python
简单分析python的类变量、实例变量
Aug 23 Python
Python单元测试工具doctest和unittest使用解析
Sep 02 Python
如何分离django中的媒体、静态文件和网页
Nov 12 Python
python程序实现BTC(比特币)挖矿的完整代码
Jan 20 Python
Python实现简单猜数字游戏
Feb 03 Python
python检测远程服务器tcp端口的方法
Mar 14 #Python
python循环监控远程端口的方法
Mar 14 #Python
python通过shutil实现快速文件复制的方法
Mar 14 #Python
python监控网站运行异常并发送邮件的方法
Mar 13 #Python
go语言计算两个时间的时间差方法
Mar 13 #Python
python实现端口转发器的方法
Mar 13 #Python
python实现超简单端口转发的方法
Mar 13 #Python
You might like
来自PHP.NET的入门教程
2006/10/09 PHP
php中使用sftp教程
2015/03/30 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
php引用和拷贝的区别知识点总结
2019/09/23 PHP
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
javascript实现禁止复制网页内容
2014/12/16 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
AngularJS的ng Http Request与response格式转换方法
2016/11/07 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
2016/12/19 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
2017/01/13 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
2017/01/22 Javascript
Angular开发者指南之入门介绍
2017/03/05 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
[49:15]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第二场 1月19日
2021/03/11 DOTA
python的常见命令注入威胁
2013/02/18 Python
python 中的int()函数怎么用
2017/10/17 Python
Python高级用法总结
2018/05/26 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
canvas实现高阶贝塞尔曲线(N阶贝塞尔曲线生成器)
2018/01/10 HTML / CSS
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
2014年教育教学工作总结
2014/11/13 职场文书
三好学生评语大全
2014/12/29 职场文书
感动中国何玥观后感
2015/06/02 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
Python中第三方库Faker的使用详解
2022/04/02 Python
JS前端监控采集用户行为的N种姿势
2022/07/23 Javascript