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面向对象编程中类的继承
Jun 17 Python
python使用psutil模块获取系统状态
Aug 27 Python
numpy中以文本的方式存储以及读取数据方法
Jun 04 Python
给你一面国旗 教你用python画中国国旗
Sep 24 Python
python pycharm最新版本激活码(永久有效)附python安装教程
Sep 18 Python
解决pytorch DataLoader num_workers出现的问题
Jan 14 Python
Python for循环通过序列索引迭代过程解析
Feb 07 Python
Python 高效编程技巧分享
Sep 10 Python
python cookie反爬处理的实现
Nov 01 Python
python实现计算器简易版
Dec 17 Python
python 获取谷歌浏览器保存的密码
Jan 06 Python
matplotlib更改窗口图标的方法示例
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 更新数据库中断的解决方法
2009/06/05 PHP
PHP 变量的定义方法
2010/01/26 PHP
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
2016/09/22 PHP
详解使用php调用微信接口上传永久素材
2017/04/11 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
ECMAScript6块级作用域及新变量声明(let)
2015/06/12 Javascript
jQuery插件datatables使用教程
2016/04/21 Javascript
基于jQuery实现仿百度首页选项卡切换效果
2016/05/29 Javascript
实例详解jQuery的无new构建
2016/08/02 Javascript
简单的渐变轮播插件
2017/01/12 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
2019/06/21 Javascript
vue cli安装使用less的教程详解
2019/07/12 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
python判断给定的字符串是否是有效日期的方法
2015/05/13 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
2018/04/22 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
使用pandas对两个dataframe进行join的实例
2018/06/08 Python
Python配置文件处理的方法教程
2019/08/29 Python
python xlwt如何设置单元格的自定义背景颜色
2019/09/03 Python
关于Keras模型可视化教程及关键问题的解决
2020/01/24 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
软件测试工程师结构化面试题库
2016/11/23 面试题
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
高中校园广播稿
2014/01/11 职场文书
表彰大会策划方案
2014/05/13 职场文书
作风建设年活动总结
2014/08/27 职场文书
2014年外联部工作总结
2014/11/17 职场文书
教师实习自我鉴定总结
2019/08/20 职场文书