python - UDP pinger 分配
问题描述
我一直在尝试在 python 中编写一个 UDP 客户端/服务器(如底部所示)。代码工作并运行。但是,我相信这条线有问题:
try:
data, server = client_socket.recvfrom(1024) **# THIS LINE**
end = time.time()
elapsed = end - start
print(f'{data} {pings} {elapsed}')
当我运行代码时,它会按我的意愿打印十次计数器、当前时间和“请求超时”。我不知道为什么!我做了很多研究并尝试了其他人的代码,但没有一个有效!请帮忙!
服务器:
import random
from socket import *
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('', 12000))
while True:
rand = random.randint(0, 10)
message, address = serverSocket.recvfrom(1024)
message = message.upper()
if rand < 4:
continue
serverSocket.sendto(message, address)
客户:
import time
import socket
count = 0
for pings in range(10):
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
client_socket.settimeout(1.0)
message = b'test'
address = ("127.0.0.1", 12000)
start = time.time()
client_socket.sendto(message, address)
count = count +1
print(count, "\n", "current time: ", start)
try:
data, server = client_socket.recvfrom(1024)
end = time.time()
elapsed = end - start
print(f'{data} {pings} {elapsed}')
except socket.timeout:
print('REQUEST TIMED OUT')
解决方案
推荐阅读
- ios - 如何为 iOS 项目设置 GitLab CI
- c# - Asp Net Core 2.2 项目不能使用类核心库目标 2.2
- php - 如何让用户上传文件到服务器
- python - python中的属性错误。对象没有属性
- spring - 如何将 websocket 与移动应用程序连接?
- java - 通过页面搜索使用的资源并删除它们
- javascript - 防止将重复值从文本框添加到列表框
- go - 为什么 src/runtime/proc.go 的 main 函数中有一个看似无用的无限 for 循环?
- angular - 角度单元测试视频分辨率
- php - 如何在 wordpress 多站点中将用户从站点“A”转换为站点“B”