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 相关文章推荐
利用QT写一个极简单的图形化Python闹钟程序
Apr 07 Python
状态机的概念和在Python下使用状态机的教程
Apr 11 Python
Python判断字符串与大小写转换
Jun 08 Python
Python中的字符串操作和编码Unicode详解
Jan 18 Python
浅谈python中的实例方法、类方法和静态方法
Feb 17 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
Dec 12 Python
Python之ReportLab绘制条形码和二维码的实例
Jan 15 Python
python opencv读mp4视频的实例
Dec 07 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
Jan 23 Python
Python字典推导式将cookie字符串转化为字典解析
Aug 10 Python
python 微信好友特征数据分析及可视化
Jan 07 Python
python生成大写32位uuid代码
Mar 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
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
ScrollDown的基本操作示例
2013/06/09 Javascript
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
基于jQuery实现中英文切换导航条效果
2016/09/18 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
Vue渲染函数详解
2017/09/15 Javascript
vue 动态绑定背景图片的方法
2018/08/10 Javascript
laypage.js分页插件使用方法详解
2019/07/27 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
jQuery实现购物车全功能
2021/01/11 jQuery
利用Python实现Windows定时关机功能
2017/03/21 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
Python编程深度学习计算库之numpy
2018/12/28 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
python文件路径操作方法总结
2020/12/21 Python
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
帕克纽约:PARKER NY
2018/12/09 全球购物
酒店大堂副理的职责范文
2014/02/13 职场文书
爸爸的花儿落了教学反思
2014/02/20 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
论群众路线学习心得体会
2014/10/31 职场文书
保密工作整改报告
2014/11/06 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL
Spring Data JPA的Audit功能审计数据库的变更
2021/06/26 Java/Android
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL
SQL注入详解及防范方法
2021/12/06 MySQL