Tôi đang cố triển khai thuật toán dừng và chờ. tôi gặp sự cố khi triển khai thời gian chờ tại người gửi. Trong khi chờ ACK từ reciever, tôi đang sử dụng hàm recvfrom(). Tuy nhiên điều này làm cho chương trình nhàn rỗi, và tôi không thể làm theo thời gian chờ để truyền lại.Thực hiện Python cho Thuật toán Dừng và Chờ
đây là mã của tôi:
import socket
import time
mysocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
while True:
ACK= " "
userIn=raw_input()
if not userIn : break
mysocket.sendto(userIn, ('127.0.0.01', 88))
ACK, address = mysocket.recvfrom(1024) #the prog. is idle waiting for ACK
future=time.time()+0.5
while True:
if time.time() > future:
mysocket.sendto(userIn, ('127.0.0.01', 88))
future=time.time()+0.5
if (ACK!=" "):
print ACK
break
mysocket.close()
Bạn thực sự không nên sử dụng một sản phẩm nào ngoại trừ khoản, trừ khi bạn đang rethrowing ngoại lệ. Bạn biết nó sẽ là một socket.timeout, vậy tại sao không bắt chỉ là một? – drxzcl
@drxzcl chỉ cần thêm rằng;) – cmd
'trong khi không được thừa nhận' thay vì' khi được thừa nhận' hoặc tôi đã bỏ lỡ điều gì đó? – mtahmed