Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在socket Python中设置recvfrom的超时_Python 3.x_Sockets_Udp - Fatal编程技术网

Python 3.x 如何在socket Python中设置recvfrom的超时

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'

我这里有一个简洁的小程序,只连接到服务器。它是一个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':
     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秒超时。

这是否回答了您的问题,这回答了你的问题吗,