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

Python测网络连通性、能否访问某个网络或者端口号<网络检测、ping主机、测试端口>

一、ping命令及其使用

ping命令是在计算机网络领域中用来测试目标主机是否可达以及其延迟时间的命令。对于Python来说,我们可以通过subprocess模块来实现执行命令。下面是示例代码:

import subprocessdef ping(host):result = subprocess.run(['ping', '-c', '3', '-W', '5', host],capture_output=True,encoding='utf8')if result.returncode == 0:return True, result.stdoutelse:return False, result.stderrreachable, output = ping('www.google.com')
print(output)

以上代码将执行ping命令来检测www.google.com是否可达,ping命令将执行3次且等待5秒钟,如果目标主机可达,则函数将返回True和ping命令的输出;否则将返回False和错误信息。

二、使用urllib和requests检测是否连接到特定站点

urllib和requests是Python中最受欢迎和使用的HTTP网络请求库之一。我们可以使用这些库来检查是否连接到特定站点。下面是一个简单的使用urllib的示例:

import urllib.requestdef is_internet_available():try:urllib.request.urlopen('https://www.google.com')return Trueexcept:return Falseif is_internet_available():print('Internet is available!')
else:print('Internet is unavailable!')

以上代码尝试访问Google网站,如果该网站可访问,则将打印消息。否则将打印不可用消息。

以下是一个使用requests库的示例,您可能会发现它更加具有可读性:

import requestsdef is_internet_available():try:requests.get('https://www.google.com')return Trueexcept:return Falseif is_internet_available():print('Internet is available!')
else:print('Internet is unavailable!')

与上面的代码示例类似,此代码尝试访问Google网站。如果该站点可用,则将打印消息。否则将打印不可用消息。

三、使用socket库测试TCP/UDP端口的可用性

socket库允许我们使用TCP或UDP协议在本地或远程计算机上的特定端口测试可用性。我们可以使用如下示例代码:

import socketdef is_port_open(ip_address, port):sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)result = sock.connect_ex((ip_address, port))if result == 0:return Trueelse:return Falseif is_port_open('127.0.0.1', 80):print('Port 80 is open!')
else:print('Port 80 is closed!')

以上代码使用socket库测试本地计算机上的端口80。如果端口开放,则将打印Port 80 is open!;否则,将打印Port 80 is closed!。

同样,我们可以使用该库来测试TCP和UDP协议的远程端口的可用性。

四、使用ping3库实现更多ping功能

如果要在Python中执行更加高级的ping命令,您可以使用ping3库。ping3库提供了许多高级功能,如单个数据包的ping、发现局域网内的主机等。以下是示例代码:

import ping3# Ping a host
response_time = ping3.ping('127.0.0.1')
print(response_time)# Ping a host with a custom timeout
response_time = ping3.ping('127.0.0.1', timeout=2)
print(response_time)# Scan a local network for hosts that respond to ping
hosts = ping3.ping_scan('192.168.1.1/24')
print(hosts)

以上示例演示了如何使用ping3库来执行ping命令、设定自定义超时时间以及扫描局域网内的主机。

五、使用multiping库同时ping多个主机

如果你需要在Python中同时ping多个主机,可以使用multiping库。这个库使用了多线程来加快ping的速度。以下是示例代码:

import multiping# Ping multiple hosts
hosts = ['127.0.0.1', 'google.com', 'bing.com']
results = multiping.multi_ping(hosts)for addr, rtt in results.items():if rtt is None:print('%s timeout' % addr)else:print('%s responded in %d ms' % (addr, rtt))

以上代码将同时ping多个主机,并输出结果。

http://www.lryc.cn/news/192238.html

相关文章:

  • 【沧元图】玉阳宫主是正是邪,和面具人有勾结吗?现在已有答案了
  • C++笔记之popen()和std_system()和std_async()执行系统命令比较
  • pycharm2020无法打开,点击无反应
  • 深度学习之微调
  • 【# 完美解决 node.js 模块化后报错 ReferenceError: require is not defined】
  • Jackson忽略json数组中null元素
  • 基于SpringBoot的网上订餐系统
  • 【04】基础知识:React组件实例三大核心属性 - state
  • SpringBoot 过滤器filter当中的自定义异常捕获问题
  • 实验3:左右循环LED灯
  • 行业追踪,2023-10-13
  • 【实用小工具】一键分离音频中的纯人声~
  • 如何在虚幻引擎中渲染动画?
  • Hadoop3教程(三):HDFS文件系统常用命令一览
  • 2023年中国手机回收量、手机回收价值及行业细分现状分析[图]
  • 格式转换 ▏Python 实现Word转HTML
  • 自己在家给电脑重装系统Win10教程
  • 198、RabbitMQ 的核心概念 及 工作机制概述; Exchange 类型 及 该类型对应的路由规则;了解什么是JMS。
  • 怎样理解伦敦金交易的点差
  • mysql主从工作原理、搭建
  • PHP实现赛邮【SUBMAIL】短信通知
  • 完整的电商平台后端API开发总结
  • 游戏中的随机——“动态平衡概率”算法
  • AUTOSAR汽车电子嵌入式编程精讲300篇-基于 FIFO 和优先级序列 CAN 总线系统(续)
  • C# InformativeDrawings 生成素描画
  • 关于网络协议的若干问题(一)
  • 电脑重做系统---win10
  • HTML基础入门02
  • 【C++】如何使用RapidXML读取和创建XML文件
  • 《UnityShader入门精要》学习3