SOCKS5 پورٹ فیلڈز نیٹ ورک بائٹ ترتیب میں دو بے نشان بائٹس ہیں: سب سے اہم بائٹ پہلے آتا ہے۔ Go میں، پہلے سے تصدیق شدہ uint16 کو براہ راست انکوڈ کریں:

var field [2]byte
binary.BigEndian.PutUint16(field[:], port)

encoding/binary درآمد کریں۔ پورٹ 1080 کے لیے، نتیجے میں ہیکساڈیسیمل بائٹس 04 38 ہیں۔ پورٹ 4 کے لیے، وہ 00 04 ہیں؛ ابتدائی صفر مقررہ چوڑائی والے فیلڈ کا حصہ ہے۔

اگر ان پٹ بڑے عدد یا سٹرنگ کے طور پر شروع ہو، تو uint16 میں تبدیل کرنے سے پہلے اس کی عددی حد کی تصدیق کریں۔ تبدیلی حد سے باہر کی قیمت بتانے کے بجائے اعلیٰ بٹس کو ضائع کر سکتی ہے۔

SOCKS5 جواب میں، BND.PORT کو ترتیب دیں، یعنی سرور کا بندھا ہوا پورٹ فیلڈ۔ صرف اس لیے درخواست کردہ منزل پورٹ کو اس فیلڈ میں کاپی نہ کریں کہ دونوں دو بائٹس لیتے ہیں۔ انکوڈ شدہ فیلڈ کو جواب کے پتے کے بعد رکھیں، جس کی لمبائی ATYP پر منحصر ہے۔

متعلقہ مضامین