1

这是我的场景。我有一个用 C++ 编写的应用程序,但不是完整的源代码,但它的“肉”就在那里。我也有这个应用程序的编译 exe。它与我们网络上某处的服务器通信。我正在尝试在 java 中复制 C++ 代码,但是它使用 dwords 和内存引用、sizeof 等,所有在 java 中不存在的东西,因为它管理自己的内存。它构建这个庞大的复杂消息,然后通过网络触发它。所以我基本上是在嗅探流量并检查数据包并尝试对它发送的数据进行硬编码,以查看是否可以通过这种方式从服务器获得响应。但是我似乎无法完美地复制该消息。其中一些,例如它发送的许可证代码是“clear hex”,即翻译成ascii的hex,

理想情况下,我不想这样做,但这是一个垫脚石,看看是否可以让服务器响应我。其中一项功能是让应用程序自行注册,这就是我要复制的功能。

我上面的一些假设可能是错误的,所以我提前道歉。谢谢你的时间。

4

1 回答 1

2

在 Java 中,所有“字符”数据都被编码为 Unicode(而不是 ASCII)。因此,当您与外部事物交谈时,您需要将内部字符串映射到外部世界。有几种方法可以做到:

  1. 使用ByteArrayOutputStream. 这基本上是一个不断增长的字节缓冲区,您可以将其附加到其中。这允许您使用字节构建消息。

  2. 使用getBytes(encoding)where encoding 是对方理解的编码。在您的情况下,文本部分将是“ASCII”。

在你的情况下,你可能需要两者。创建一个字节缓冲区,然后将字符串和字节附加到其中,然后getByteArray()通过套接字 API 发送最终结果 ()。

于 2009-08-17T15:34:40.567 回答