Java SOCKS पत्त्यातील ऋण संख्या ऋण IP नाहीत
Java byte API ने SOCKS पत्ता फील्ड पार्स करताना ती unsigned प्रोटोकॉल मूल्ये म्हणून वाचा.
Java मध्ये byte signed आहे. त्यामुळे ज्याचे वायर मूल्य 217 आहे असे octet byte अॅरेमधून थेट छापल्यावर ऋण मूल्य म्हणून दिसू शकते. याचा अर्थ प्रॉक्सीने अवैध ऋण IP पत्ता पाठवला असा नाही.
साठवलेले मूल्य unsigned पूर्णांकात रूपांतरित करा, उदाहरणार्थ Byte.toUnsignedInt(value) वापरून, किंवा फील्ड वाचताना DataInputStream.readUnsignedByte() वापरा. नेटवर्क क्रमातील पोर्टसाठी, कोणत्याही byte ला signed दशांश संख्या मानण्याऐवजी दस्तऐवजीकृत दोन-byte मूल्य वाचा.
प्रस्तुतीकरण फ्रेमिंगपासून वेगळे ठेवा. सॉकेट वाचन मागितलेपेक्षा कमी byte परत करू शकते. पूर्ण फील्ड वाचा, नंतर SOCKS आवृत्ती व पत्ता प्रकारानुसार त्याचा अर्थ लावा. SOCKS5 पत्त्यांमध्ये IPv4 पत्ता, IPv6 पत्ता किंवा लांबी-उपसर्ग असलेले डोमेन नाव असू शकते; निश्चित चार-byte गृहीतक यापैकी फक्त एकच स्वरूप समाविष्ट करते.
ऋण दिसणारे octet दुरुस्त केल्याने प्रदर्शन समस्या सुटते. पण चुकीच्या ऑफसेटपासून वाचन सुरू करणारा किंवा पत्त्याच्या मधे थांबलेला parser त्यामुळे दुरुस्त होत नाही.