资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Python

头歌Python网络编程之UDP套接字编程

Python 更新时间: 发布时间: 计算机考试归档 最新发布

头歌Python网络编程之UDP套接字编程

第1关:UDP 初体验

from socket import *#********* Begin *********## 指定服务器地址和端口address=('127.0.0.1',56789);#********* End *********##********* Begin *********## 创建UDP套接字s=socket(AF_INET,SOCK_DGRAM);#********* End *********##********* Begin *********## 设置套接字超时值1秒s.settimeout(1);#********* End *********#bufsize=1024;i = 0while i < 2:    try:        # ********* Begin *********#        # 生成数据报,编码为bytes以便发送        message=bytes('Ping {} time'.format(i+1),encoding='utf-8');        # ********* End *********#        # ********* Begin *********#        # 将信息发送到服务器        s.sendto(message,address);        # ********* End *********#        # ********* Begin *********#        # 从服务器接收信息,同时也能得到服务器地址,并将其输出        data,address=s.recvfrom(bufsize);        data=bytes.decode(data);        print("Receive {}: from {}".format(i+1,address));        # ********* End *********#    except Exception as e:        # ********* Begin *********#        # 输出超时丢包的反馈信息        print("Sequence {}: Request timed out".format(i+1));        # ********* End *********#    i = i + 1#********* Begin *********## 关闭该UDP套接字s.close();#********* End *********#

第2关:UDP 计算丢包率

from socket import *#********* Begin *********## 指定服务器地址和端口address=('127.0.0.1',56789);#********* End *********##********* Begin *********## 创建UDP套接字s=socket(AF_INET,SOCK_DGRAM);#********* End *********##********* Begin *********## 设置套接字超时值1秒s.settimeout(1);#********* End *********#bufsize=1024;i = 0count = 0 # 可以用来记录丢包的个数while i < 10:    try:        # ********* Begin *********#        # 生成数据报,编码为bytes,并发送给服务器        message=bytes('Ping {} time'.format(i+1),encoding='utf-8');        s.sendto(message,address);        # ********* End *********#        # ********* Begin *********#        # 从服务器接收信息,同时也能得到来自服务器的数据,需要输出该数据,具体见编程要求        data,address=s.recvfrom(bufsize);        data=bytes.decode(data);        print("Receive {}: {}".format(i+1,data));        # ********* End *********#    except Exception as e:        # ********* Begin *********#        count=count+1;        # 输出超时丢包的反馈信息。记录丢包的个数,便于后面计算丢包率        print("The {} package is lost".format(i+1));        # ********* End *********#    i = i + 1# ********* Begin *********## 计算并输出丢包率print('Packet loss rate: {:.2f}'.format(count/i));# ********* End *********##********* Begin *********## 关闭该UDP套接字s.close();#********* End *********#

第3关:创建基于 UDP 的 Ping 程序

from socket import *import time#********* Begin *********## 指定服务器地址和端口address=('127.0.0.1',56789)#********* End *********##********* Begin *********## 创建UDP套接字s=socket(AF_INET,SOCK_DGRAM);#********* End *********##********* Begin *********## 设置套接字超时值1秒s.settimeout(1);#********* End *********#bufsize=1024;i = 0while i < 10:    sendTime = time.time() # 记录发送ping报文的当前时间戳    try:        # ********* Begin *********#        # 生成数据报,编码为bytes,并发送给服务器        message=bytes('Ping {} time'.format(i+1),encoding='utf-8');        s.sendto(message,address);        # ********* End *********#        # ********* Begin *********#        # 从服务器接收信息,同时也能得到来自服务器的地址,需要输出该地址,(不要输出端口号!)        # 并且需要计算和输出RTT,具体见编程要求        data,address=s.recvfrom(bufsize);        receiveTime=time.time();        data=bytes.decode(data);        print("Receive {}: Reply from {} RTT = {:.2f}s".format(i+1,address[0],receiveTime-sendTime));        # ********* End *********#    except Exception as e:        # ********* Begin *********#        # 输出超时丢包的反馈信息。        print("Sequence {}: Request timed out".format(i+1));        # ********* End *********#    i = i + 1#********* Begin *********## 关闭该UDP套接字s.close();#********* End *********#
转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/1097980.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【头歌Python网络编程之UDP套接字编程】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2