پیرودونکی لیږل تماموي، پراکسي EOF ویني، او ځواب ورکېږي. د پراکسي دواړه ساکټونه سمدلاسه بندول کولی شي همدا ترتیب رامنځته کړي. په TCP ریلې کې په یوه لوري منظم پای دا نه وایي چې بل لوری تمام شوی.

هغه پیرودونکی په پام کې ونیسئ چې غوښتنه لیږي، خپل لیږلو اړخ بندوي او د ځواب انتظار کوي:

client -- request, then FIN --> proxy --> service
client <-------- reply ------- proxy <-- service

پراکسي دوه TCP اړیکې او دوه په خپلواکه توګه خوځیدونکي بایټ جریانونه لري. باید د انپټ د پای نښه هم مخته یوسي، وروسته له دې چې هغه بایټونه چې مخکې یې دي یوړل.

د EOF له لیږلو مخکې قطار خالي کړئ

په TCP جریان کې د غیر صفر اندازې ترلاسه کولو کې، د صفر بیرته راستنیدل د هغه راتلونکي جریان منظم پای ښیي. هغه لوستلو لوری پای ته رسیدلی وټاکئ. له هغې څخه د نور انپټ انتظار بند کړئ، مګر هغه بایټونه وساتئ چې دمخه د مقابل ساکټ لپاره په قطار کې دي.

کله چې له پیرودونکي څخه خدمت ته قطار خالي شو، په POSIX ساکټ کې shutdown(service_socket, SHUT_WR) وبلئ. دا خدمت ته نور لیږل پای ته رسوي او د خدمت څخه پیرودونکي ته لوری د لاسرسي وړ پاتې کېږي. کله چې خدمت خپل ځواب پای ته ورسوي، د ځواب قطار له خالي کولو وروسته هغه آینې عمل پلي کړئ.

د ډیسکریپټرونو بندول هغه ټکي ته اړه لري چې دواړه لوري او د دوی انتظار بفرونه پای ته رسیدلي وي، یا چې تېروتنه یا لغوه کول پای ته رسول غواړي. د هغه ملګري لپاره محدود وخت وساتئ چې هیڅکله خپله پاتې نیمه بشپړه نه کوي.

چمتووالی لوستلو ته بلنه ده

د لوستلو وړ ساکټ کولی شي ډاټا یا د EOF حالت ولري. recv وبلئ او پایله یې تشریح کړئ. مثبتې شمیرې هغه بایټونه دي چې لیږل کیږي؛ صفر د لوري پای دی. په نه بندیدونکي ساکټ کې، EAGAIN یا EWOULDBLOCK معنی دا ده چې اوس نور انپټ نشته، پداسې حال کې چې EINTR ممکن بیا هڅه وغواړي. هیڅ یو یې د EOF سره ورته پېښه نه ده.

په بیرته راستنیدونکي بایټ بفر کې د FIN بیرغ مه لټوئ. TCP دې API ته منظم بایټ جریان رسوي؛ د پیکټ حدود او د FIN برخه عادي اپلیکیشن پیلوډ نه دي.

دا د خام بایټ تونل د ژوند دوره ده. هغه HTTP پراکسي چې پیغامونه تحلیلوي لاهم باید د HTTP چوکاټ ته درناوی وکړي، او هغه پراکسي چې TLS پای ته رسوي هم د TLS د بندولو پروتوکول لري. هغه پروتوکول پرېکړې د لوري TCP ریلې پورته وساتئ.

اړوندې مقالې