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爬虫抓取豆瓣电影TOP100及用户头像的方法
Jan 20 Python
Django学习笔记之Class-Based-View
Feb 15 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
Jul 24 Python
Python3爬虫之urllib携带cookie爬取网页的方法
Dec 28 Python
FFT快速傅里叶变换的python实现过程解析
Oct 21 Python
python通过opencv实现图片裁剪原理解析
Jan 19 Python
Python数组并集交集补集代码实例
Feb 18 Python
Tkinter中复选菜单是否被选中的判断与设置方式
Mar 04 Python
Python 使用Opencv实现目标检测与识别的示例代码
Sep 08 Python
Python类成员继承重写的实现
Sep 16 Python
python 对象真假值的实例(哪些视为False)
Dec 11 Python
Python编写车票订购系统 Python实现快递收费系统
Aug 14 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中heredoc的使用方法
2013/06/17 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
php_pdo 预处理语句详解
2016/11/21 PHP
javascript this用法小结
2008/12/19 Javascript
js跑步算法的实现代码
2013/12/04 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
2014/05/05 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
2016/08/10 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
Angular4 中常用的指令入门总结
2017/06/12 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
使用vue-router完成简单导航功能【推荐】
2018/06/28 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
2018/09/21 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
超轻量级的js时间库miment使用解析
2019/08/02 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
uni-app如何页面传参数的几种方法总结
2020/04/28 Javascript
使用python绘制人人网好友关系图示例
2014/04/01 Python
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
Python实现FTP上传文件或文件夹实例(递归)
2017/01/16 Python
python机器学习库scikit-learn:SVR的基本应用
2019/06/26 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
浙大网新C/C++面试解惑
2015/05/27 面试题
国际会议邀请函范文
2014/01/16 职场文书
关于读书的演讲稿
2014/05/07 职场文书
授权收款委托书范本
2014/10/10 职场文书
兴趣班停课通知
2015/04/24 职场文书
Python中os模块的简单使用及重命名操作
2021/04/17 Python
为Java项目添加Redis缓存的方法
2021/05/18 Redis
Spring Boot DevTools 全局配置学习指南
2022/03/31 Java/Android
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python