Nid yw rhifau negyddol mewn cyfeiriad SOCKS Java yn IP negyddol
Darllenwch feysydd cyfeiriad SOCKS fel gwerthoedd protocol di-lofnod wrth eu dadansoddi gydag APIau byte Java.
Mae byte yn Java yn lofnodol. Felly gall octet â gwerth gwifren 217 ymddangos fel gwerth negyddol pan gaiff ei argraffu'n uniongyrchol o arae o feitiau. Nid yw hyn yn golygu bod y proxy wedi anfon cyfeiriad IP negyddol annilys.
Trowch y gwerth a storiwyd yn gyfanrif di-lofnod, er enghraifft gyda Byte.toUnsignedInt(value), neu defnyddiwch DataInputStream.readUnsignedByte() wrth ddarllen y maes. Ar gyfer porth mewn trefn rhwydwaith, darllenwch y gwerth dau-feit a ddogfenwyd yn hytrach na thrin y naill feit neu'r llall fel rhif degol lofnodol.
Gwahanwch y gynrychiolaeth oddi wrth y fframio hefyd. Gall darlleniad soced ddychwelyd llai o feitiau na'r gofyn. Darllenwch y maes cyfan, yna ei ddehongli yn ôl fersiwn SOCKS a math y cyfeiriad. Gall cyfeiriadau SOCKS5 gynnwys cyfeiriad IPv4, cyfeiriad IPv6 neu enw parth â rhagddodiad hyd; dim ond un o'r ffurfiau hyn a gwmpesir gan dybiaeth sefydlog o bedwar beit.
Mae cywiro octet sy'n edrych yn negyddol yn datrys y broblem arddangos. Nid yw'n datrys parser sydd wedi dechrau darllen ar y gwrthbwynt anghywir neu wedi stopio hanner ffordd trwy'r cyfeiriad.