କ୍ଲାଏଣ୍ଟ ପଠାଇବା ସମାପ୍ତ କରେ, ପ୍ରକ୍ସି 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 ରିଲେ ଉପରେ ରଖନ୍ତୁ।

ସମ୍ପର୍କିତ ପ୍ରବନ୍ଧ