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动态加载变量示例分享
Feb 17 Python
讲解Python中for循环下的索引变量的作用域
Apr 15 Python
详解Python中for循环的使用方法
May 14 Python
学习python类方法与对象方法
Mar 15 Python
python实现文本界面网络聊天室
Dec 12 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
Python字典添加,删除,查询等相关操作方法详解
Feb 07 Python
python实现取余操作的简单实例
Aug 16 Python
python中的unittest框架实例详解
Feb 05 Python
Python如何使用神经网络进行简单文本分类
Feb 25 Python
python基础之爬虫入门
May 10 Python
Python中第三方库Faker的使用详解
Apr 02 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中header设置常见文件类型的content-type
2015/06/23 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
JavaScript 关键字屏蔽实现函数
2009/08/02 Javascript
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
Javascript 面向对象 继承
2010/05/13 Javascript
dess中一个简单的多路委托的实现
2010/07/20 Javascript
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
2016/01/14 Javascript
js实现简单排列组合的方法
2016/01/27 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
2016/07/07 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
Angular2从搭建环境到开发步骤详解
2016/10/17 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
vue elementUI tree树形控件获取父节点ID的实例
2018/09/12 Javascript
小程序获取周围IBeacon设备的方法
2018/10/31 Javascript
VuePress 快速踩坑小结
2019/02/14 Javascript
vue增加强缓存和版本号的实现方法
2019/05/01 Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
2020/07/18 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
Python 专题二 条件语句和循环语句的基础知识
2017/03/19 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
numpy中矩阵合并的实例
2018/06/15 Python
python获取地震信息 微信实时推送
2019/06/18 Python
python2.7的flask框架之引用js&css等静态文件的实现方法
2019/08/22 Python
Python 从attribute到property详解
2020/03/05 Python
flask框架中的cookie和session使用
2021/01/31 Python
ReVive利维肤美国官网:RéVive Skincare
2018/04/18 全球购物
新西兰网上购物,折扣店:BestDeals.co.nz
2019/03/20 全球购物
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS
P站美图推荐——变身女主角特辑
2022/03/20 日漫