java-通过UDP套接字发送数据包

我正在尝试将以下数据发送到将使用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();

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

谢谢,

解决方法:

您需要关心的第一件事是源计算机和目标计算机的Endian-ness.

Java是Big-Endian

C没关系,您需要确定在哪个计算机(硬件/ OS)上执行目标程序.

之后,this SO线程将能够使您通过.

上一篇:KMP算法


下一篇:KMP算法代码