我正在尝试连接到vortex.labs.overthewire.org上的端口5842并以主机字节顺序读取4个无符号整数。服务器vortex.labs.overthewire.org是在32位x86机器上(意思是,一个小端)建筑) 在Java中它可以是这样的吗?
Socket socket = new Socket("vortex.labs.overthewire.org", 5842 );
InputStream in = socket.getInputStream();
int c;
while((c=in.read())!=-1){
System.out.println((byte)c);
}
答案 0 :(得分:2)
整数可能会从32位系统发送为四字节值。因此,您需要将四个字节读入数组,然后将其转换为int:
Socket socket = new Socket("vortex.labs.overthewire.org", 5842);
DataInputStream in = new DataInputStream(socket.getInputStream());
byte[] intData = new byte[4];
for (int i = 0; i < 4; i++) {
in.readFully(intData);
System.out.println(ByteBuffer.wrap(intData)
.order(ByteOrder.LITTLE_ENDIAN).getInt());
}
答案 1 :(得分:0)
你是正确的方式。你提到你想读4个整数。也许最好使用for循环:
byte[] bytes;
for (int i=0; i<4; i++) {
bytes = new byte[4];
for (int j=0; j<4; j++) {
bytes[j] = (byte) in.read();
}
int x = java.nio.ByteBuffer.wrap(bytes).order(java.nio.ByteOrder.LITTLE_ENDIAN).getInt();
System.out.println(x);
}
另外,请勿忘记close输入流。