Python套接字-[Errno 35]资源暂时不可用
发送方函数未从接收方函数接收数据时出现问题。当发送方发送数据时,接收方接收到的数据很好。然后,接收方向发送方发送一个确认,以表明其接收到的数据刚刚好。但是,发送功能根本不接收来自接收器的数据 以下是发送确认的接收器功能Python套接字-[Errno 35]资源暂时不可用,python,python-3.x,macos,sockets,Python,Python 3.x,Macos,Sockets,发送方函数未从接收方函数接收数据时出现问题。当发送方发送数据时,接收方接收到的数据很好。然后,接收方向发送方发送一个确认,以表明其接收到的数据刚刚好。但是,发送功能根本不接收来自接收器的数据 以下是发送确认的接收器功能 serversocket.sendto(str.encode(sequence), server_address) 我在接收器中没有尝试异常,它不会抛出异常。 以下是事情的发送方: time_sent = time.time() ack_recv
serversocket.sendto(str.encode(sequence), server_address)
我在接收器中没有尝试异常,它不会抛出异常。
以下是事情的发送方:
time_sent = time.time()
ack_recv = None
try:
curr_time = time.time()
time_received = curr_time - time_sent
while(time_received < timeout_timer):
#clientsocket.setblocking(False)
clientsocket.setblocking(0)
try:
ack_recv = clientsocket.recv(1024)
print("rdt_send: ack_num received: ", ack_recv.decode('utf-8'))
if ack_recv != None or ack_recv != b'0':
break
except socket.error as err:
print(err)
#ass
curr_time = time.time()
time_received = curr_time - time_sent
except Exception as err:
print(err)
它总是例外
超时计时器设置为5。
你对如何处理这个问题有什么想法吗?
如果需要,下面是我初始化clientsocket(发送方)的方法
下面是我如何初始化serversocket(Receiver)的
这是由于你的非阻塞插座。如果数据不立即可用,则会引发错误。请稍后再试,或在
recv
之前使用select
,以确保套接字已准备好接收,或不要使用非阻塞套接字
print("rdt_send: ack_num received: ", ack_recv.decode('utf-8'))
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
serversocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_address = ('localhost', port)
serversocket.bind(server_address)