1

これが私のシナリオです。私は C++ で書かれたアプリケーションを持っていますが、完全なソースではありませんが、その「肉」はそこにあります。このアプリケーションのコンパイル済み exe もあります。ネットワーク上のどこかにあるサーバーと通信します。Java で C++ コードを複製しようとしていますが、dwords やメモリ参照、sizeof など、独自のメモリを管理するため Java には存在しないすべてのものを使用しています。この大規模で複雑なメッセージを作成し、ネットワーク経由で送信します。したがって、基本的にトラフィックを盗聴し、パケットを検査し、送信しているデータをハードコーディングして、この方法でサーバーから応答を取得できるかどうかを確認しています。ただし、メッセージを完全に複製することはできないようです。送信するライセンス コードなどの一部は、「クリア 16 進数」、つまり、ASCII に変換される 16 進数です。

理想的には、このようなことはしたくありませんが、サーバーに応答してもらうことができるかどうかを確認するための足がかりです。機能の 1 つは、アプリケーションがそれ自体を登録することであり、それを複製しようとしています。

上記の私の仮定のいくつかは間違っているかもしれませんので、事前にお詫び申し上げます。御時間ありがとうございます。

4

1 に答える 1

2

Java では、すべての「文字」データは (ASCII ではなく) Unicode としてエンコードされます。したがって、外部の何かと話すときは、内部の文字列を外部の世界にマッピングする必要があります。それにはいくつかの方法があります。

  1. を使用しByteArrayOutputStreamます。これは基本的に、追加できるバイトの成長バッファです。これにより、バイトを使用してメッセージを作成できます。

  2. getBytes(encoding)encoding が相手側が理解できるエンコーディングである場合に使用します。あなたの場合、それはテキスト部分の「ASCII」になります。

あなたの場合、おそらく両方が必要です。バイト バッファを作成し、それに文字列とバイトを追加してgetByteArray()から、ソケット API 経由で最終結果 ( ) を送信します。

于 2009-08-17T15:34:40.567 に答える