3

C++ を使用するサーバーに次のデータを送信しようとしています。

static int user_id; // 4 Bytes
static byte state;  // 1 Byte
static String cipher_data; // 128 Bytes
static String hash;  // 128 Bytes

static final int PACKET_SIZE = 261;

public static byte [] packet = new byte [PACKET_SIZE];

私はそれらすべてを含むバイト配列を作成しようとしています:

ByteArrayOutputStream baos = new ByteArrayOutputStream(PACKET_SIZE);
DataOutputStream dos = new DataOutputStream(baos);
dos.write(state);
dos.writeInt(user_id);
for (int i = 0; i < cipher_data.length(); i++) {
    dos.write((byte) cipher_data.charAt(i));
}
for (int i = 0; i < cipher_data.length(); i++) {
    dos.write((byte) hash.charAt(i));
}
packet = baos.toByteArray();

これで、すべてのデータを含むバイト配列が得られましたが、私が行っていることが正しいかどうか、およびこのすべてのデータをサーバー側から読み取ることができるかどうかはわかりません。どなたかアドバイスいただけると本当に助かります

ありがとう、

4

2 に答える 2

4

最初に気にする必要があるのは、送信元マシンと宛先マシンのエンディアンです。

Javaはビッグエンディアンです

C ++は重要ではありません。どのマシン(ハードウェア/ OS)が実行先のプログラムであるかを判別する必要があります。

その後、このSOスレッドはあなたを通り抜けることができるでしょう。

于 2011-02-22T13:23:55.613 に答える
0

2つ目は、文字列のエンコードです。String.getBytes()文字をバイトにキャストする代わりに使用します。

于 2011-02-22T13:26:38.767 に答える