Go ನಲ್ಲಿ SOCKS5 ಪೋರ್ಟ್ಗಳನ್ನು ಎರಡು ಬಿಗ್-ಎಂಡಿಯನ್ ಬೈಟ್ಗಳಾಗಿ ಎನ್ಕೋಡ್ ಮಾಡಿ
ವೇರಿಯಬಲ್ ಉದ್ದದ ಬೈನರಿ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಕತ್ತರಿಸುವ ಬದಲು SOCKS5 ಪೋರ್ಟ್ ಕ್ಷೇತ್ರಗಳಿಗೆ Go ನ binary.BigEndian ಸಹಾಯಕಗಳನ್ನು ಬಳಸಿ.
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 ಅನ್ನು ಅವಲಂಬಿಸಿದೆ.