当前位置: 首页 > news >正文

python测试udp端口_python检测远程udp端口是否打开的方法

本文实例讲述了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检测远程udp端口是否打开的方法

本文地址: http://www.cppcns.com/jiaoben/python/120870.html

相关文章:

  • 图像条纹检测 python_预告:面向强反射表面的多传感器三维检测技术研究
  • 高德地图标记文字修改样式_地图标注有哪些优势?如何进行地图标注?
  • supervisor 重启_Supervisor守护进程安装
  • tp5.0 根据经纬度 获取附近信息_通过手机信号获取基站信息—基站定位详解
  • 树复制替换id_STP生成树协议的技术要点
  • python模型的属性是什么_Python数据模型
  • python如何优化内存_如何优化Python占用的内存
  • python functools.reduce使用_Python的functools.reduce用法
  • vue computed 传参_vue生命周期
  • vb.net 循环生成excel的多个sheet_自动生成报告第一弹
  • python从零开始到放弃之二_python从入门到放弃QAQ
  • 安科瑞仪表调试工具_安科瑞ADW系列物联网智能电力仪表——吴玲霞/徐振
  • winform ctrl键单击多选_Ctrl+Shift 组合键用法大全,知道一半以上就是高手!
  • springboot中为何参数拿对象接收总是报错_SpringBoot整合Swagger2
  • sqlconnection对象的open()是否成功_VBA与数据库解决方案第8讲:创建ADO对象,到打开记录集的过程...
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • [译]CSS 居中(Center)方法大合集
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • CSS 三角实现
  • IDEA常用插件整理
  • interface和setter,getter
  • Java-详解HashMap
  • Java应用性能调优
  • LeetCode算法系列_0891_子序列宽度之和
  • Map集合、散列表、红黑树介绍
  • nodejs实现webservice问题总结
  • PHP的Ev教程三(Periodic watcher)
  • Python学习笔记 字符串拼接
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • 多线程 start 和 run 方法到底有什么区别?
  • 简单实现一个textarea自适应高度
  • 探索 JS 中的模块化
  • 我的业余项目总结
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • #前后端分离# 头条发布系统
  • $.proxy和$.extend
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • .java 9 找不到符号_java找不到符号
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .net和php怎么连接,php和apache之间如何连接
  • @Responsebody与@RequestBody