广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python简易版 ping
  • 265
分享到

python简易版 ping

简易版pythonping 2023-01-31 01:01:17 265人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

说明:蓝色=命令名称       浅绿=命令参数       浅蓝=选项       紫色=目录       系统环境:Centos  5.5  x86_64       python版本:Python 2.7.3 代码: #!/usr/

说明:蓝色=命令名称

      浅绿=命令参数

      浅蓝=选项

      紫色=目录

      系统环境:Centos  5.5  x86_64

      python版本:Python 2.7.3

代码:

  1. #!/usr/bin/env python  
  2. #-*- coding:utf-8 -*-  
  3. #Author:left_left  
  4. import sys  
  5. import os  
  6. import time  
  7. import select  
  8. import struct  
  9. import Socket  
  10.  
  11. def data_fORMat(seq, id):  
  12.     sum = id + seq + 8 
  13.     sum = (sum >> 16) + (sum & 0xffff)  
  14.     sum = sum + (sum >> 16)  
  15.     sum = sum ^  0xffff 
  16.     header = struct.pack('bbHHh', 8, 0, sum,  
  17.             id, seq)  
  18.     return header  
  19.  
  20. def time_format():  
  21.     if os.name == "nt":  
  22.         return time.clock()  
  23.     else:  
  24.         return time.time()  
  25.  
  26. def recv_data(chk, t, s):  
  27.     while 1:  
  28.         r, w, x = select.select([s], [], [], 1)  
  29.           
  30.         if s in r:  
  31.             d = s.recvfrom(1024)  
  32.             p = d[0]  
  33.             if p[24:28] == chk:  
  34.                 t = time_format() - t  
  35.                 print "%d bytes from %s: icmp_seq=%d ttl=%d time=%.3f ms" % (  
  36.                         len(p), d[1][0], struct.unpack('h', p[26:28])[0], int(ord(p[8])), t*1000)  
  37.                 return 1 
  38.             else:  
  39.                 continue 
  40.         else:  
  41.             print "Request timed out ..." 
  42.             return 0 
  43.    
  44. def ping(host):  
  45.     i = 0 
  46.     sent = 0 
  47.     suc_num = 0 
  48.     id = os.getpid()  
  49.  
  50.     try:  
  51.         addr = socket.gethostbyname(host)  
  52.         if not addr:  
  53.             raise   
  54.     except:  
  55.         print "Please input the correct host ..." 
  56.         exit(1)  
  57.       
  58.     try:  
  59.         while 1:  
  60.             sent += 1 
  61.             s = socket.socket(socket.AF_INET, socket.SOCK_RAW, 1)  
  62.             data = data_format(sent, id)  
  63.             t = time_format()  
  64.             try:  
  65.                 s.sendto(data, (addr, 1))  
  66.             except socket.error:  
  67.                 print "Count connect %s" % host  
  68.                 exit(1)  
  69.  
  70.             i = recv_data(data[-4:], t, s)  
  71.             suc_num += i  
  72.             time.sleep(1)  
  73.     except KeyboardInterrupt:  
  74.         print "-------- %s ping statistics --------" % host  
  75.         print r"%d packets transmitted, %d received, %d%% packet loss" %(sent,   
  76.                 suc_num, (sent-suc_num)*100/ sent )  
  77.  
  78. def main():  
  79.     try:  
  80.         host = sys.argv[1]  
  81.     except IndexError:  
  82.         print "Missing host ..." 
  83.         exit(1)  
  84.  
  85.     ping(host)  
  86.  
  87. if __name__ == '__main__':  
  88.     main() 

效果

结束语:

本程序只是简单的实现了ping功能,和真正的ping还有很大的差距,只是用来测试一下对icmp的掌握程度,忘各路大神指点。

通过程序去理解协议是个不错的方法O(∩_∩)O~

--结束END--

本文标题: python简易版 ping

本文链接: https://www.lsjlt.com/news/184034.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python简易版 ping
    说明:蓝色=命令名称       浅绿=命令参数       浅蓝=选项       紫色=目录       系统环境:CentOS  5.5  x86_64       python版本:Python 2.7.3 代码: #!/usr/...
    99+
    2023-01-31
    简易版 python ping
  • java实现简易版简易版dubbo
    目录一、dubbo简介二、架构设计三、开发工具四、一步步实现4.1 客户端消费实现4.2 服务实例曝光到注册中心4.3 自动化配置实现五、测试5.1 编写api5.2 实现api,标...
    99+
    2022-11-12
  • Python3 实现简易ping监控并发
    Python3 实现简易ping监控并发动报警邮件1、实现原理通过ping命令结果获取丢包率和延时情况,当丢包率和延时达到预设值时,将结果作为邮件内容,并发送邮件2、邮件是用smtplib和email实现发送的3、目前脚本有个小问题就是:我...
    99+
    2023-01-31
    简易 ping
  • Python 函数简单易理解版
    目录Python 函数一、什么是模块化程序设计?1、 编写流程——自顶向下2、函数在模块化设计的作用二、实战1、功能简介2、通讯录功能简介3、主程序入口4、主程序包含以下功能5、用什...
    99+
    2022-11-12
  • python区块链简易版交易实现示例
    目录说明引言比特币交易交易输出发送币余额查看总结说明 本文根据https://github.com/liuchengxu/blockchain-tutorial的内容,用python...
    99+
    2022-11-11
  • Python制作简易版2048小游戏
    目录目标效果设计开始步骤一步骤二步骤三步骤四步骤五今天我们来动手实现一款2048小游戏。这款游戏的精髓就玩家能够在于通过滑动屏幕合并相同数字,直到不能再合并为止。玩法可以说是非常的简...
    99+
    2022-11-11
  • Python+Pygame制作简易版2048小游戏
    目录导语正文主要代码效果图导语 哈喽!大家好,我是栗子,感谢大家的支持! 新的一天,新气象,程序猿们的日常开始敲敲敲,改改改——今天给大家来一款简单的小游戏...
    99+
    2022-11-13
  • 用Python写一个简易版弹球游戏
    目录1.创建游戏的主界面2.创建一个Ball球的类3.我们让球向上动起来4.让球能回弹5.增加球的运行方向6.增加小木板7.让木板可以移动8.增加球和木板的碰撞9.判断当球运动到底部...
    99+
    2022-11-12
  • Python - 简易版计算器(附完整代码)
    文章目录 1. 实现的功能2. 录入数据及运算符处理函数3. 检查输入的运算符规范性函数4. 录入运算符号处理函数5. 输入的第二个数的处理函数6. 完整代码6. 拓展 1. 实现的功能...
    99+
    2023-10-07
    python 数据库
  • python区块链简易版交易完善挖矿奖励示例
    目录说明引言奖励UTXO 集Merkle 树P2PKH总结说明 本文根据https://github.com/liuchengxu/blockchain-tutorial的内容,用p...
    99+
    2022-11-11
  • Python3邮件发送简易版
    简介 SMTP是Internet邮件传输的标准(wiki)。Python提供了内置的对SMTP支持的模块,其中,email负责构造邮件,smtplib负责邮件发送。以下代码实现了简单的纯文本邮件发送,可以发送多人,抄送多人。   代码实现 ...
    99+
    2023-01-31
    邮件发送 简易版
  • python开发简易版在线音乐播放器
    在线音乐播放器,使用python的Tkinter库做了一个界面,感觉这个库使用起来还是挺方便的,音乐的数据来自网易云音乐的一个接口,通过urllib.urlopen模块打开网址,使用Json模块进行数据的解...
    99+
    2022-06-04
    播放器 在线音乐 简易版
  • Python如何实现简易版音乐播放器
    小编给大家分享一下Python如何实现简易版音乐播放器,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、前言今天我们将用Python来创建一个属于自己的音乐播放器。为此,我们将使用三个软件包:Tkinter:用于UIPyg...
    99+
    2023-06-15
  • Python项目部署到服务器(pycharm简易版)
    一、介绍 1.本文使用的一个Django项目进行演示,相关代码和数据可从git上拉取 项目代码git地址:https://gitee.com/XiaoYu333/OnlineStoreSalesDataScreen.git 2.使用pych...
    99+
    2023-12-23
    python 服务器 pycharm django
  • python区块链简易版交易完善挖矿奖励怎么实现
    这篇文章主要讲解了“python区块链简易版交易完善挖矿奖励怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python区块链简易版交易完善挖矿奖励怎么实现”吧!奖励挖矿奖励,实际上就...
    99+
    2023-06-30
  • 利用Python写个简易版星空大战游戏
    目录前言一.游戏画面二.游戏结束画面三.游戏素材四.游戏代码五、核心代码1.导入模块2.动态星空背景函数3.不定时产生敌机函数4.飞碟的移动5.子弹的移动6.玩家射击函数7.播放背景...
    99+
    2022-11-13
  • 怎么用Python+Pygame制作简易版2048小游戏
    这篇文章主要介绍了怎么用Python+Pygame制作简易版2048小游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Python+Pygame制作简易版2048小游戏文章都会有所收获,下面我们一起来看...
    99+
    2023-06-29
  • Python中的多线程(史上最简单易懂版)
    简介: 多线程简单理解就是:一个CPU,也就是单核,将时间切成一片一片的,CPU轮转着去处理一件一件的事情,到了规定的时间片就处理下一件事情。 主要内容: 1.python中显示当前线程信息的属性和方...
    99+
    2023-10-09
    python
  • python实现简易五子棋游戏(控制台版)
    本文实例为大家分享了python实现简易五子棋游戏的具体代码,供大家参考,具体内容如下 运行效果:  完整代码+注释:  finish = False # 游戏...
    99+
    2022-11-10
  • Linux模拟实现【简易版bash】
    ✨个人主页: Yohifo 🎉所属专栏: Linux学习之旅 🎊每篇一句: 图片来源 🎃操作环境: CentOS 7.6 阿里云远程服务器 Good judgment comes fro...
    99+
    2023-08-18
    linux bash 服务器 云原生 运维
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作