Нэг давталт SOCKS хариултын найман байт хүсэж байна. Тэр гурав хүлээн авсан. Дараагийн уншилт b'' буцаана, давталт түүнийг нэмж, уртыг шалгаад эцэс төгсгөлгүй дахин оролдоно.

Энэ нь EOF-ийг зохицуулах алдаа бөгөөд урт хугацаа шаарддаг удаан прокси биш. Ердийн урсгал сокетийн хүлээн авалтад хоосон байт мөр нь хос тал салсан гэсэн үг. Үлдсэн таван байт тэр холболтоор ирэхгүй.

Нарийн унших туслахт гурван ялгаатай үр дүн хэрэгтэй: хоосон бус хэсгүүдийг хуримтлуулах, шаардлагатай уртад хүрэхийн өмнө EOF дээр бүтэлгүйтэх, хугацаа эсвэл өөр сокетийн алдааг дамжуулах. Эдгээр тохиолдлыг нэг ерөнхий дахин оролдлогын давталтад нэгтгэж болохгүй.

Үйлдлийн өмнө сокетийн төлөвлөсөн хугацааг тохируулж, прокси протоколын заасан талбарын уртыг уншаарай. Нэг хүлээн авалт хариултын зөвхөн нэг хэсгийг буцааж чадна. Харин том тогтмол буфер хүсэх нь SOCKS хаяг бүрийг ийм урттай болгодоггүй.

Хуучин MSG_WAITALL хэсгийг түүний эх кодонд нааж, EOF, дохио, платформын зан төлөвийг хамардаг гэж үзэж хамаарлыг засаж болохгүй. Засвартай хэрэгжүүлэлтийн дэмжигдсэн засварыг сонгох, эсвэл задлагч таны код бол туслахын гэрээг санаатайгаар хэрэгжүүлээрэй.

Хэдэн байт хүлээж, хэдэн байт хүлээн авсныг хадгалаарай, итгэмжлэлийн ачааллыг бүртгэхгүйгээр. «Найман хариултын байтаас гурвын дараа EOF» нь эвдэрсэн солилцоог «прокси дахин гацсан» гэхээс хамаагүй сайн тайлбарладаг.

Холбоотой нийтлэлүүд