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 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ।

ਸੰਬੰਧਿਤ ਲੇਖ