الأعداد السالبة في عنوان SOCKS الخاص بـ Java ليست عناوين IP سالبة
اقرأ حقول عنوان SOCKS كقيم بروتوكول غير موقّعة عند تحليلها باستخدام واجهات Java للبايت.
النوع byte في Java موقّع. لذلك قد يظهر الثماني الذي تكون قيمته على الشبكة 217 كقيمة سالبة عند طباعته مباشرة من مصفوفة بايتات. هذا لا يعني أن الوسيط أرسل عنوان IP سالبًا غير صالح.
حوّل القيمة المخزنة إلى عدد صحيح غير موقّع، مثلًا عبر Byte.toUnsignedInt(value)، أو استخدم DataInputStream.readUnsignedByte() أثناء قراءة الحقل. وبالنسبة لمنفذ بترتيب الشبكة، اقرأ القيمة ذات البايتين الموثقة بدلًا من معاملة أي من البايتين كعدد عشري موقّع.
افصل أيضًا بين التمثيل والتأطير. قد تُرجع قراءة المقبس بايتات أقل من المطلوب. اقرأ الحقل كاملًا، ثم فسّره وفق إصدار SOCKS ونوع العنوان. يمكن أن تحتوي عناوين SOCKS5 على عنوان IPv4 أو عنوان IPv6 أو اسم نطاق مسبوق بطوله؛ والافتراض الثابت بأربعة بايتات يغطي واحدًا فقط من هذه الأشكال.
تصحيح الثماني الذي يبدو سالبًا يعالج مشكلة العرض. لكنه لا يصلح محللًا بدأ القراءة من إزاحة خاطئة أو توقف في منتصف العنوان.