通过UDP套接字发送数据包

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();

现在我有包含所有数据的字节数组,但我不确定我的操作是否正确,以及所有这些数据是否能够从服务器端读取。如果您能给我一些建议,我将不胜感激。

谢谢!

2个回答

4

你需要关注的第一件事是源和目标机器的字节序

Java是大端字节序

C++并不重要,你需要确定目标程序在哪台机器(硬件/操作系统)上执行。

之后,这个SO线程应该能够帮助你解决问题。


0
第二个问题是字符串的编码。请使用String.getBytes()而不是仅将字符强制转换为字节。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接