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 मा निर्भर गर्दछ।

सम्बन्धित लेखहरू