NetworkStream.DataAvailable មិនសម្គាល់ចុងបញ្ចប់នៃការឆ្លើយតប HTTP ទេ
ការពារការទាញយក HTTP ដែលកាត់ខ្លី ដោយប្រើការដាក់ស៊ុមសារ ជំនួស NetworkStream.DataAvailable ជាលក្ខខណ្ឌបញ្ចប់។
NetworkStream.DataAvailable == false មានន័យថាគ្មានបៃដែលត្រៀមអានភ្លាមៗទេ។ វាមិនមានន័យថាការឆ្លើយតប HTTP បានបញ្ចប់ទេ។ រង្វិលជុំដែលឈប់នៅទីនោះអាចកាត់ការទាញយក SOCKS ធម្មតាទាំងស្រុង ក្នុងចន្លោះរវាងកញ្ចប់។
បន្ទាប់ពី SOCKS បង្កើតការតភ្ជាប់ TCP ហើយ ការដាក់ស៊ុម HTTP នៅតែផ្តល់ច្បាប់បញ្ចប់៖
- តួ Content-Length បញ្ចប់បន្ទាប់ពីបៃមាតិកាដែលបានប្រកាស។
- ការឆ្លើយតប chunked ត្រូវការ chunk បញ្ចប់ និង trailer ពាក់ព័ន្ធ។
- ការឆ្លើយតបដែលកំណត់ដោយការតភ្ជាប់ បញ្ចប់ជាមួយការតភ្ជាប់។
- ស្ថានភាពខ្លះ និងការឆ្លើយតបចំពោះ HEAD គ្មានតួ។
អានស្ថានភាព និងចំណងជើង ដើម្បីកំណត់ច្បាប់ដែលអនុវត្ត។ ការរង់ចាំតែការបិទមិនមែនជាដំណោះស្រាយទូទៅទេ ព្រោះការឆ្លើយតប HTTP ពេញលេញអាចបន្ថែមការតភ្ជាប់ឱ្យបើក។ សមត្ថភាពរបស់ buffer មួយក៏មិនពាក់ព័ន្ធនឹងប្រវែងនៃការឆ្លើយតបដែរ។
ប្រើការអនុវត្តការដាក់ស៊ុមរបស់អតិថិជន HTTP នៅពេលវាគាំទ្រការដឹកជញ្ជូនតាម proxy ដែលបានជ្រើស។ នៅលើ runtime .NET ទំនើបដែលត្រូវគ្នា សូមពិចារណា ការគាំទ្រ SOCKS ដើមរបស់ HttpClient។ ការអនុវត្តឆៅត្រូវរក្សាស្ថានភាពញែកចេញរវាងចំណងជើងមិនពេញលេញ និងការអានតួ ហើយបែងចែកការបញ្ចប់ជោគជ័យពីការបោះបង់ ការអស់ពេល និង EOF ដែលមិនបានរំពឹង។ សម្រាប់សំណើអានដែលមិនទទេ បៃសូន្យដែលអានបានមានន័យថា stream បានបញ្ចប់; នេះខុសពីការគ្មានបៃនៅក្នុងជួរនៅពេលនេះ។
proxy អាចធ្វើឱ្យចន្លោះពេលឃើញច្បាស់ ប៉ុន្តែវាមិនប្តូរជួរទទួលទទេទៅជាសញ្ញាចុងបញ្ចប់សារទេ។