【问题标题】:Does java handle packets differently on ubuntu vs windowsjava在ubuntu和windows上处理数据包的方式不同吗
【发布时间】:2014-11-08 15:38:09
【问题描述】:

我有一个 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 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 ........ ........

【问题讨论】:

  • 请给我们看代码。
  • 请包含表现出这种行为的代码。

标签: java ubuntu openssl vps packets


【解决方案1】:

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

【讨论】:

  • 不是我希望找到的,因为我需要在我的代码中更改很多东西。大部分还是修好了。还需要完成,所以如果我完成并且所有作品我都会标记这个回答。
猜你喜欢
  • 1970-01-01
  • 2022-09-30
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
  • 2016-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多