【发布时间】:2020-10-27 17:04:45
【问题描述】:
我遇到了发送函数没有从接收函数接收数据的问题。当发送方发送数据时,接收方接收到数据就好了。接收方然后向发送方发送确认,以表明它接收到的数据很好。但是,发送函数根本不接收来自接收者的数据。
这里是发送确认的接收函数。
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)
在发送方的尝试异常部分,它永远不会打印出来
print("rdt_send: ack_num received: ", ack_recv.decode('utf-8'))
它总是去异常。
timeout_timer 设置为 5。 关于如何解决这个问题的任何想法? 如果需要,这是我初始化客户端套接字(发送方)的方式
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
这是我如何初始化 serversocket(接收器)
serversocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_address = ('localhost', port)
serversocket.bind(server_address)
【问题讨论】:
标签: python python-3.x macos sockets