بىر دەۋرىيلىك SOCKS جاۋابىنىڭ سەككىز بايتىنى خالايدۇ. ئۇ ئۈچىنى ئالغان. كېيىنكى ئوقۇش b'' نى قايتۇرىدۇ، دەۋرىيلىك ئۇنى قوشىدۇ، ئۇزۇنلۇقىنى تەكشۈرىدۇ ۋە مەڭگۈ قايتا سىنايدۇ.

بۇ EOF نى بىر تەرەپ قىلىش خاتالىقى، ئۇزۇنراق ۋاقىت چېكى كېرەك بولىدىغان ئاستا پروكسىي ئەمەس. نورمال ئېقىملىق سوكېت قوبۇل قىلىشتا، قۇرۇق بايت تىزمىسى قارشى تەرەپنىڭ ئۈزۈلگەنلىكىنى بىلدۈرىدۇ. قالغان بەش بايت بۇ ئۇلىنىشتا كەلمەيدۇ.

دەل ئوقۇش ياردەمچىسىگە ئۈچ خىل ئوخشىمىغان نەتىجە كېرەك: قۇرۇق بولمىغان بۆلەكلەرنى توپلاش، تەلەپ قىلىنغان ئۇزۇنلۇقتىن بۇرۇن EOF تا مەغلۇپ بولۇش، ۋە ۋاقىت چېكى ياكى باشقا سوكېت خاتالىقىنى يەتكۈزۈش. بۇ ئەھۋاللار بىر ئومۇمىي قايتا سىناش دەۋرىيلىكىگە قوشۇلۇپ كەتمەسلىكى كېرەك.

مەشغۇلاتتىن بۇرۇن سوكېتنىڭ مۆلچەرلەنگەن ۋاقىت چېكىنى تەڭشەڭ، ۋە پروكسىي كېلىشىمى بەلگىلىگەن رايون ئۇزۇنلۇقىنى ئوقۇڭ. بىر قېتىملىق قوبۇل قىلىش جاۋابنىڭ پەقەت بىر قىسمىنى قايتۇرالايدۇ. ئەكسىچە، چوڭ مۇقىم بۇفېر تەلەپ قىلىش ھەر بىر SOCKS ئادرېسىنى شۇ ئۇزۇنلۇقتا قىلمايدۇ.

كونا MSG_WAITALL پارچىسىنى ئۇنىڭ مەنبەسىگە چاپلاپ، ئۇ EOF، سىگنال ۋە سۇپا ھەرىكىتىنى قاپلايدۇ دەپ پەرەز قىلىپ بىر تايىنىشنى ئوڭشىماڭ. ئاسراشتىكى ئىجرانىڭ قوللايدىغان تۈزىتىشىنى تاللاڭ، ياكى تەھلىل قىلغۇچ سىزنىڭ كودىڭىز بولسا ياردەمچىنىڭ كېلىشىمىنى قەستەن يولغا قويۇڭ.

قانچە بايت كۈتۈلگەن ۋە قوبۇل قىلىنغانلىقىنى ساقلاڭ، كىملىك ئۇچۇرلىرىنى خاتىرىلىمەي. «سەككىز جاۋاب بايتىنىڭ ئۈچىدىن كېيىن EOF» بۇزۇلغان ئالماشتۇرۇشنى «پروكسىي يەنە قېتىپ قالدى» دىن خېلى ياخشى چۈشەندۈرىدۇ.

مۇناسىۋەتلىك ماقالىلەر