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)