Java SOCKS ವಿಳಾಸದಲ್ಲಿನ ಋಣ ಸಂಖ್ಯೆಗಳು ಋಣ IP ಅಲ್ಲ
Java byte API ಗಳಿಂದ SOCKS ವಿಳಾಸ ಕ್ಷೇತ್ರಗಳನ್ನು ಪಾರ್ಸ್ ಮಾಡುವಾಗ ಅವನ್ನು unsigned ಪ್ರೋಟೋಕಾಲ್ ಮೌಲ್ಯಗಳಾಗಿ ಓದಿ.
Java ನಲ್ಲಿ byte signed ಆಗಿದೆ. ಆದ್ದರಿಂದ wire ಮೌಲ್ಯ 217 ಇರುವ octet, byte ಸರಣಿಯಿಂದ ನೇರವಾಗಿ ಮುದ್ರಿಸಿದಾಗ ಋಣ ಮೌಲ್ಯವಾಗಿ ಕಾಣಿಸಬಹುದು. ಇದರರ್ಥ ಪ್ರಾಕ್ಸಿ ಅಮಾನ್ಯ ಋಣ IP ವಿಳಾಸವನ್ನು ಕಳುಹಿಸಿದೆ ಎಂದಲ್ಲ.
ಸಂಗ್ರಹಿಸಿದ ಮೌಲ್ಯವನ್ನು unsigned ಪೂರ್ಣಾಂಕಕ್ಕೆ ಪರಿವರ್ತಿಸಿ, ಉದಾಹರಣೆಗೆ Byte.toUnsignedInt(value) ಬಳಸಿ, ಅಥವಾ ಕ್ಷೇತ್ರವನ್ನು ಓದುವಾಗ DataInputStream.readUnsignedByte() ಬಳಸಿ. ನೆಟ್ವರ್ಕ್ ಕ್ರಮದ ಪೋರ್ಟ್ಗಾಗಿ, ಯಾವುದೇ byte ಅನ್ನು signed ದಶಮಾಂಶ ಸಂಖ್ಯೆ ಎಂದು ಪರಿಗಣಿಸುವ ಬದಲು ದಾಖಲಾದ ಎರಡು-byte ಮೌಲ್ಯವನ್ನು ಓದಿ.
ಪ್ರಾತಿನಿಧ್ಯವನ್ನು ಫ್ರೇಮಿಂಗ್ನಿಂದ ಬೇರ್ಪಡಿಸಿ. ಸಾಕೆಟ್ ಓದುವಿಕೆ ಕೇಳಿದ್ದಕ್ಕಿಂತ ಕಡಿಮೆ byte ಹಿಂತಿರುಗಿಸಬಹುದು. ಇಡೀ ಕ್ಷೇತ್ರವನ್ನು ಓದಿ, ನಂತರ SOCKS ಆವೃತ್ತಿ ಮತ್ತು ವಿಳಾಸ ಪ್ರಕಾರದ ಪ್ರಕಾರ ಅರ್ಥೈಸಿ. SOCKS5 ವಿಳಾಸಗಳು IPv4 ವಿಳಾಸ, IPv6 ವಿಳಾಸ ಅಥವಾ ಉದ್ದ-ಪೂರ್ವಪ್ರತ್ಯಯವಿರುವ ಡೊಮೇನ್ ಹೆಸರನ್ನು ಹೊಂದಿರಬಹುದು; ಸ್ಥಿರ ನಾಲ್ಕು-byte ಊಹೆ ಈ ರೂಪಗಳಲ್ಲಿ ಒಂದನ್ನು ಮಾತ್ರ ಒಳಗೊಳ್ಳುತ್ತದೆ.
ಋಣವಾಗಿ ಕಾಣುವ octet ಅನ್ನು ಸರಿಪಡಿಸುವುದು ಪ್ರದರ್ಶನ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುತ್ತದೆ. ಆದರೆ ತಪ್ಪು ಆಫ್ಸೆಟ್ನಿಂದ ಓದಲು ಪ್ರಾರಂಭಿಸಿದ ಅಥವಾ ವಿಳಾಸದ ಮಧ್ಯದಲ್ಲಿ ನಿಂತ parser ಅನ್ನು ಅದು ಸರಿಪಡಿಸುವುದಿಲ್ಲ.