在ubuntu vs windows上java是否会以不同的方式处理数据包

时间:2014-11-08 15:38:09

标签: java ubuntu openssl vps packets

我有一个vps,我想在其上安装一个java服务器程序。 它包含ssl,但我相信它不用于java。至少它似乎没有真正加密。 奇怪的是,从ubuntu服务器发送2个字节,我没有指定,并且一些字节改变了。我知道需要知道为什么它不会在Windows上执行此操作并在我的ubuntu vps上执行此操作... 如果不同如何解决它。

我使用printWriter然后刷新到客户端。 和“ISO8859-1”来加密数据包,那些不是字符串或数字,只是我发送的普通字节。

protected Socket socket;
protected BufferedReader socketIn;
protected PrintWriter socketOut;
protected LoginServer server;

public static final byte[] LOGIN_SUCCESSBYTE = {(byte)0x01, (byte)0x00, (byte)0x00, (byte)0x00,         (byte)0x00, (byte)0x01, (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00};

this.socketOut.write(new String(LoginServer.LOGINHEADER, "ISO8859-1"));
this.socketOut.flush();
this.socketOut.write(new String(LoginServer.LOGIN_SUCCESSBYTE,"ISO8859-1"));
this.socketOut.flush();

由windows发送的数据包     00000000 EC 2C 4A 00 01 00 02 00 00 00 FF 00 00 00 00 00。,J ..... ........
    00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........     00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........     00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........     00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ......

ubuntu发送的数据包
    00000000 C3 AC 2C 4A 00 01 00 02 00 00 00 C3 BF 00 00 00 ..,J .... ........
    00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........     00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........     00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........     00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........

1 个答案:

答案 0 :(得分:0)

String不是二进制数据的容器,Writer用于字符数据,而不是二进制数据。只需使用OutputStream直接写入字节,而不是Writer。 Java根本不处理数据包,更不用说了,但它在不同的平台上有不同的默认字符编码。