Java SOCKS ଠିକଣାରେ ଋଣାତ୍ମକ ସଂଖ୍ୟା ଋଣାତ୍ମକ IP ନୁହେଁ
Java byte API ସହିତ SOCKS ଠିକଣା ଫିଲ୍ଡ ପାର୍ସ କରିବା ସମୟରେ ସେଗୁଡ଼ିକୁ unsigned ପ୍ରୋଟୋକଲ ମୂଲ୍ୟ ଭାବରେ ପଢ଼ନ୍ତୁ।
Java ରେ byte signed। ତେଣୁ ଯାହାର ୱାୟର ମୂଲ୍ୟ 217, ସେହି octet byte array ରୁ ସିଧାସଳଖ ପ୍ରିଣ୍ଟ କଲାବେଳେ ଋଣାତ୍ମକ ମୂଲ୍ୟ ଭାବରେ ଦେଖାଯାଇପାରେ। ଏହାର ଅର୍ଥ ପ୍ରକ୍ସି ଏକ ଅବୈଧ ଋଣାତ୍ମକ IP ଠିକଣା ପଠାଇଛି ନୁହେଁ।
ସଂରକ୍ଷିତ ମୂଲ୍ୟକୁ unsigned ପୂର୍ଣ୍ଣସଂଖ୍ୟାରେ ରୂପାନ୍ତର କରନ୍ତୁ, ଉଦାହରଣ ସ୍ୱରୂପ Byte.toUnsignedInt(value) ସହିତ, କିମ୍ବା ଫିଲ୍ଡ ପଢ଼ିବା ସମୟରେ DataInputStream.readUnsignedByte() ବ୍ୟବହାର କରନ୍ତୁ। ନେଟୱର୍କ କ୍ରମରେ ଥିବା ପୋର୍ଟ ପାଇଁ ଯେକୌଣସି byte କୁ signed ଦଶମିକ ସଂଖ୍ୟା ଭାବରେ ଧରିବା ପରିବର୍ତ୍ତେ ଦଲିଲଭୁକ୍ତ ଦୁଇ-byte ମୂଲ୍ୟ ପଢ଼ନ୍ତୁ।
ଉପସ୍ଥାପନାକୁ ଫ୍ରେମିଂରୁ ଅଲଗା ରଖନ୍ତୁ। ସକେଟ ପଠନ ଅନୁରୋଧିତଠାରୁ କମ୍ byte ଫେରାଇପାରେ। ସମ୍ପୂର୍ଣ୍ଣ ଫିଲ୍ଡ ପଢ଼ନ୍ତୁ, ତାପରେ SOCKS ସଂସ୍କରଣ ଓ ଠିକଣା ପ୍ରକାର ଅନୁସାରେ ବ୍ୟାଖ୍ୟା କରନ୍ତୁ। SOCKS5 ଠିକଣାରେ IPv4 ଠିକଣା, IPv6 ଠିକଣା କିମ୍ବା ଲମ୍ବା-ଉପସର୍ଗ ଥିବା ଡୋମେନ ନାମ ରହିପାରେ; ସ୍ଥିର ଚାରି-byte ଅନୁମାନ ଏହି ମଧ୍ୟରୁ କେବଳ ଗୋଟିଏ ରୂପକୁ ଅନ୍ତର୍ଭୁକ୍ତ କରେ।
ଋଣାତ୍ମକ ଦେଖାଯାଉଥିବା octet ସଂଶୋଧନ କଲେ ପ୍ରଦର୍ଶନ ସମସ୍ୟା ସମାଧାନ ହୁଏ। କିନ୍ତୁ ଭୁଲ ଅଫସେଟରୁ ପଢ଼ିବା ଆରମ୍ଭ କରିଥିବା କିମ୍ବା ଠିକଣାର ମଧ୍ୟରେ ଅଟକି ଯାଇଥିବା parser କୁ ଏହା ସଂଶୋଧନ କରେ ନାହିଁ।