Python 3.x 如何在socket Python中设置recvfrom的超时
我这里有一个简洁的小程序,只连接到服务器。它是一个UDP客户端。它应该向服务器发送消息并等待响应Python 3.x 如何在socket Python中设置recvfrom的超时,python-3.x,sockets,udp,Python 3.x,Sockets,Udp,我这里有一个简洁的小程序,只连接到服务器。它是一个UDP客户端。它应该向服务器发送消息并等待响应 import socket host = socket.gethostname() # Change to the ip address port = 4000 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) message = input('Send_To_Server: ') while message != 'endhost'
import socket
host = socket.gethostname() # Change to the ip address
port = 4000
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
message = input('Send_To_Server: ')
while message != 'endhost':
s.sendto(message.encode('utf-8'), (host, port))
data, addr = s.recvfrom(1024)
data = data.decode('utf-8')
print("Received from server: " + data)
message = input('Send_To_Server: ')
s.close()
唯一的问题是,如果服务器没有启动,它就会停在那里。有没有办法设置一个超时,使它在这么多秒后通过命令?使用
settimeout
功能:
import socket
host = socket.gethostname() # Change to the ip address
port = 4000
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.settimeout(10)
message = input('Send_To_Server: ')
while message != 'endhost':
s.sendto(message.encode('utf-8'), (host, port))
data, addr = s.recvfrom(1024)
data = data.decode('utf-8')
print("Received from server: " + data)
message = input('Send_To_Server: ')
s.close()
这将设置10秒超时。使用
settimeout
功能:
import socket
host = socket.gethostname() # Change to the ip address
port = 4000
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.settimeout(10)
message = input('Send_To_Server: ')
while message != 'endhost':
s.sendto(message.encode('utf-8'), (host, port))
data, addr = s.recvfrom(1024)
data = data.decode('utf-8')
print("Received from server: " + data)
message = input('Send_To_Server: ')
s.close()
这将设置10秒超时。这是否回答了您的问题,这回答了你的问题吗,