TCP erdi-itxiera birbidaltzea zain dauden byteak hustu ondoren
Kudeatu EOF TCP proxy batean, ilaran dauden datuak galdu gabe eta beste norabideko erantzuna moztu gabe.
Bezeroak bidaltzeari uzten dio, proxyak EOF ikusten du, eta erantzuna desagertzen da. Proxyaren bi socketak berehala ixteak sekuentzia hori bera eragin dezake. TCP errele batean, norabide bateko amaiera ordenatuak ez du esan nahi beste norabidea amaitu denik.
Demagun eskaera bat bidali, bere bidaltze-aldea itxi eta erantzunaren zain geratzen den bezero bat:
client -- request, then FIN --> proxy --> service
client <-------- reply ------- proxy <-- service
Proxyak bi TCP konexio ditu eta modu independentean mugitzen diren bi byte-fluxu. Sarreraren amaieraren adierazlea aurrera eraman behar du, aurretik doazen byteak eraman ondoren.
Hustu ilara EOF birbidali aurretik
TCP fluxu batean tamaina ez-nuluko harrera batean, zero itzultzeak sarrerako fluxu horren amaiera ordenatua adierazten du. Markatu irakurketa-norabide hori amaitutzat. Utzi hari gehiago sartzearen zain egoteari, baina gorde kontrako socketerako dagoeneko ilaran dauden byteak.
Bezeroarenetik zerbitzurako ilara hustu ondoren, deitu shutdown(service_socket, SHUT_WR) POSIX socket batean. Horrek zerbitzurantzako bidalketa gehiago amaitzen du, zerbitzutik bezerorako norabidea erabilgarri utziz. Zerbitzuak bere erantzuna amaitzean, aplikatu ispiluko eragiketa erantzunaren ilara hustu ondoren.
Deskribatzaileak ixtea bi norabideak eta haien zain dauden bufferrak amaituta dauden puntuari dagokio, edo errore edo ezeztatze batek amaiera eskatzen duen puntuari. Mantendu itxarote-denbora mugatua inoiz bere gainerako erdia osatzen ez duen pare batentzat.
Prestasuna irakurtzeko gonbidapena da
Socket irakurgarri batek datuak edo EOF egoera izan ditzake. Deitu recv eta interpretatu emaitza. Zenbaki positiboak birbidaltzeko byteak dira; zeroa norabidearen amaiera da. Blokeatu gabeko socket batean, EAGAIN edo EWOULDBLOCK esan nahi du momentu honetan ez dagoela sarrera gehiago, eta EINTR-ek berriro saiatzea eska dezake. Biak ez dira EOF-rekin gertaera bera.
Ez bilatu FIN bandera itzulitako byte-bufferrean. TCP-k byte-fluxu ordenatua ematen dio API honi; pakete-mugak eta FIN segmentua ez dira aplikazioaren karga erabilgarri arrunta.
Hau byte-tunel gordin baten bizi-zikloa da. Mezuak analizatzen dituen HTTP proxy batek HTTP markoa errespetatu behar du oraindik, eta TLS amaitzen duen proxy batek TLS itxiera-protokoloa ere badu. Mantendu protokolo-erabaki horiek norabideko TCP errelearen gainetik.