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生成IP段的方法
Jul 07 Python
Python切片知识解析
Mar 06 Python
详解字典树Trie结构及其Python代码实现
Jun 03 Python
python和shell监控linux服务器的详细代码
Jun 22 Python
Windows下python3.7安装教程
Jul 31 Python
python flask web服务实现更换默认端口和IP的方法
Jul 26 Python
使用pandas的box_plot去除异常值
Dec 10 Python
Python中Selenium库使用教程详解
Jul 23 Python
python 爬取英雄联盟皮肤并下载的示例
Dec 04 Python
python 调用Google翻译接口的方法
Dec 09 Python
python中append函数用法讲解
Dec 11 Python
Python: glob匹配文件的操作
Dec 11 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 归并排序 数组交集
2011/05/10 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
phpstorm编辑器乱码问题解决
2014/12/01 PHP
PHP实现数组根据某个单元字段排序操作示例
2018/08/01 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
JS实现点击图片在当前页面放大并可关闭的漂亮效果
2013/10/18 Javascript
jQuery实现鼠标滚轮动态改变样式或效果
2015/01/05 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
javascript实现多张图片左右无缝滚动效果
2017/03/22 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
解决webpack打包速度慢的解决办法汇总
2017/07/06 Javascript
Vuejs 页面的区域化与组件封装的实现
2017/09/11 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
js实现3D旋转相册
2020/08/02 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
Python字典操作简明总结
2015/04/13 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
python opencv实现运动检测
2018/07/10 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
python库matplotlib绘制坐标图
2019/10/18 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
婚前协议书范本两则
2014/10/16 职场文书
课程设计感想范文
2015/08/11 职场文书
大学迎新生欢迎词
2015/09/29 职场文书
课文《燕子》教学反思
2016/02/17 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏