背景
最近需要计算任务的传输的时延
找了许多代码都和网络原理里面的公式有关
然而在实际应用中并不能如此理想化
在边端与云端的任务传输中进行计算
Ubuntu系统 与 Ubuntu云平台
思路
下文的网络的传输时延,任务以包开始计算
服务器先打开端口监听
客户端再通过TCP连接传包并计算
最后算出总时间,同理也可算平均往返时延。
代码
服务器
import socket
import sys
import time
# -*- coding: utf-8 -*-
ISOTIMEFORMAT='%Y-%m-%d %X'
address = ('0.0.0.0', int(sys.argv[1]))
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(address)
s.listen(5)
var = 1
while var == 1 :
ss, addr = s.accept()
ss.send('a'.encode())
ra = ss.recv(512)
ss.close()
s.close()
客户端
import socket
import sys
import time
# -*- coding: utf-8 -*-
address = (sys.argv[1], int(sys.argv[2]))
var = int(sys.argv[3])
totalUseTime=0.0
while var > 0:
startTime=time.time()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(address)
s.send('a'.encode())
data = s.recv(512)
endTime=time.time()
useTime=(endTime-startTime)*1000
var-=1
totalUseTime+=useTime
avgUseTime=totalUseTime/int(sys.argv[3])/2
print ("Total time:",totalUseTime,"ms")
s.close()
运行
首先将ubuntu连上云
ssh root@xxx.xxx.xxx.xxx (云的IP)
在云上运行server
运行命令
python3 server.py 8343(监听端口号)
在本机运行client
python3 client.py xxx.xxx.xxx.xxx 8343(端口号) 4(包的数量)
端口号与包的数量自定义
问题
ConnectionRefusedError: [Errno 111] Connection refused
原因分析:实验使用本机与云平台,本地可ping通云(注意:云不能Ping通本地)说明是端口号的原因,查找云,发现云有安全组问题,故连接被拒绝
问题解决:进入云平台,在安全组中手动添加端口。
一定要先运行服务器监听端口
结果
代码借鉴于
网络两端延时测试脚本