Dezvolt un server echo TCP folosind python și biblioteca socket.
Aș dori să am un timeout configurat pentru fiecare conexiune de intrare. Deci, să le renunțați și să le închideți dacă există inactivitate pentru a SOCK_TIMEOUT
valoare.
Acest lucru se realizează cu setarea specifică: client_sock.settimeout(SOCK_TIMEOUT)
În același timp, aș dori să mențin activă conexiunea care utilizează metoda keepalive.Deci, dacă un pachet de probă keepalive este primit de către server de la un anumit client, aș dori să evit utilizarea timeout-ului pentru a închide acest anumit client/conexiune.
Clarificarea problemei >> Aș dori ca serverul să piardă fiecare conexiune după 3 minute de inactivitate. Acest lucru se realizează cu settimeout(SOCK_TIMEOUT)
funcţie. Principala problemă este că configurația și implementarea actuală a socket-ului TCP nu consideră sonda de menținere în viață ca „activitate”, astfel, conexiunea este închisă chiar dacă probele sunt confirmate.
Î1 >> Are sens?
Aș spune că acest lucru ar trebui să fie fezabil. Cu toate acestea, serverul socket nu poate gestiona, așa cum mi-am dorit, sonda keepalive. Deoarece, chiar dacă acestea sunt confirmate de server, ACK este returnat fiecărei probe, conexiunea este închisă la expirarea timpului.
Q2 >> Ar trebui să schimb implementarea timeout?