python udp客户端超时机制

python udp客户端超时机制,python,udp,serversocket,Python,Udp,Serversocket,如果服务器套接字中生成的rand数小于4,则我的客户端套接字将在接收数据时挂起。我需要设置超时机制,允许客户端套接字检测到有“超时”,然后它将继续发送消息。 在我运行服务器套接字和客户端套接字之后,出现如下错误消息: Traceback (most recent call last): File "E:\Studying\Python workspace\Client\src\Client.py", line 34, in <module> data , addr = client.

如果服务器套接字中生成的rand数小于4,则我的客户端套接字将在接收数据时挂起。我需要设置超时机制,允许客户端套接字检测到有“超时”,然后它将继续发送消息。 在我运行服务器套接字和客户端套接字之后,出现如下错误消息:

Traceback (most recent call last):
File "E:\Studying\Python workspace\Client\src\Client.py", line 34, in <module>
data , addr = client.recvfrom(1024)
socket.timeout: timed out
回溯(最近一次呼叫最后一次):
文件“E:\studing\Python workspace\Client\src\Client.py”,第34行,在
数据,addr=client.recvfrom(1024)
socket.timeout:超时
服务器套接字:

import random
from socket import *
serverSocket = socket(AF_INET , SOCK_DGRAM)
serverSocket.bind(('', 15000))

while True:

rand = random.randint(0, 10)
message , address = serverSocket.recvfrom (1024)
message = message.upper()
print("received message: ", message)
print("echo to address: ", address)
print(rand)

if rand < 4:
    continue
print("Sending message: ", message)
serverSocket.sendto(message, address)
随机导入
从套接字导入*
serverSocket=socket(AF_INET,SOCK_DGRAM)
serverSocket.bind(“”,15000))
尽管如此:
rand=random.randint(0,10)
消息,地址=serverSocket.recvfrom(1024)
message=message.upper()
打印(“收到的消息:”,消息)
打印(“回送至地址:”,地址)
打印(兰特)
如果rand<4:
持续
打印(“发送消息:”,消息)
serverSocket.sendto(消息、地址)
客户端套接字

import socket

UDP_IP = "127.0.0.1"
RPORT = 15000
MESSAGE = "ping"

print("UDP target IP: ", UDP_IP)
print("UDP target port: ", RPORT)
print("message going to send: ", MESSAGE)

client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

i=1

while True:
  try:

    if(i<11): 
        client.sendto(MESSAGE.encode('utf_8'),(UDP_IP, RPORT))
        print("sending message: ", MESSAGE)
        print(i)
        i=i+1
        client.settimeout(2)

        data , addr = client.recvfrom(1024)
        print("received echo: ", data)
        print("received at: " , addr )

  finally:
    print("closing socket")
    client.close()
导入套接字
UDP_IP=“127.0.0.1”
RPORT=15000
MESSAGE=“ping”
打印(“UDP目标IP:,UDP_IP”)
打印(“UDP目标端口:”,RPORT)
打印(“要发送的消息:”,消息)
客户端=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
i=1
尽管如此:
尝试:
如果(iWell),settimeout()会产生异常。请尝试以下操作:

while True:
  try:
    if(i<11): 
        client.sendto(MESSAGE.encode('utf_8'),(UDP_IP, RPORT))
        print("sending message: ", MESSAGE)
        print(i)
        i=i+1
        client.settimeout(2)

        data , addr = client.recvfrom(1024)
        print("received echo: ", data)
        print("received at: " , addr )

  except socket.timeout:
    print("closing socket")
    client.close()
为True时:
尝试:
如果(i)