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中的filter和lambda函数的使用
Apr 07 Python
浅谈django中的认证与登录
Oct 31 Python
python的socket编程入门
Jan 29 Python
Windows下安装Django框架的方法简明教程
Mar 28 Python
Python根据已知邻接矩阵绘制无向图操作示例
Jun 23 Python
Python 删除连续出现的指定字符的实例
Jun 29 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
Dec 07 Python
python读取各种文件数据方法解析
Dec 29 Python
Python读取指定日期邮件的实例
Feb 01 Python
Python写一个基于MD5的文件监听程序
Mar 11 Python
python Web flask 视图内容和模板实现代码
Aug 23 Python
Python运行异常管理解决方案
Mar 09 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
星际RPG字典
2020/03/04 星际争霸
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
Laravel修改验证提示信息为中文的示例
2019/10/23 PHP
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
用nodejs访问ActiveX对象,以操作Access数据库为例。
2011/12/15 NodeJs
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
2016/05/16 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
Javascript实现汉字和拼音互转的终极方案
2016/10/19 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
JS+Canvas绘制动态时钟效果
2017/11/10 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
2018/09/03 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
[01:02:34]TFT vs VGJ.T Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
[44:37]完美世界DOTA2联赛PWL S3 Forest vs access 第一场 12.11
2020/12/13 DOTA
总结Python中逻辑运算符的使用
2015/05/13 Python
Python字符串格式化
2015/06/15 Python
深入浅析python中的多进程、多线程、协程
2016/06/22 Python
django创建自定义模板处理器的实例详解
2017/08/14 Python
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
python中numpy数组与list相互转换实例方法
2021/01/29 Python
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
三年级数学教学反思
2014/01/31 职场文书
《小壁虎借尾巴》教学反思
2014/02/16 职场文书
小学亲子活动总结
2014/07/01 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
学校德育工作总结2015
2015/05/11 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
JavaScript使用canvas绘制坐标和线
2021/04/28 Javascript
浅谈Python数学建模之整数规划
2021/06/23 Python
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏