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 वर अवलंबून असते.

संबंधित लेख