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 पर निर्भर करती है।

संबंधित लेख