Puncte:0

configurați timeout-ul de inactivitate în timp ce gestionați sondele keepalive

drapel pe

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?

A.B avatar
drapel cl
A.B
Afaik, tcp keepalive este transparent pentru aplicație. Adică: aplicația nu poate ști că se întâmplă acest lucru (chiar dacă poate configura setările pentru ca acest lucru să se întâmple). Dacă nu poate ști despre asta, este discutabil. De ce ar trebui să-ți pese de asta? Aceasta arată ca o [problema XY](https://xyproblem.info/): trebuie să rezolvați o problemă, dar nu ne-ați spus niciodată despre aceasta.
rebatoma avatar
drapel pe
hai sa clarific problema. Aș dori ca serverul să piardă fiecare conexiune după 3 minute de inactivitate. Acest lucru se realizează cu funcția `settimeout(SOCK_TIMEOUT)`. 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.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.