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

标签 java sockets bytearray dataoutputstream bytearrayoutputstream

我正在尝试将以下数据发送到将使用 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++ 无关紧要,您需要确定目标程序在什么机器(硬件/操作系统)上执行。

在那之后,this SO thread 应该能够让你通过。

关于java - 通过 UDP 套接字发送数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5078639/

相关文章:

java - Maria DB 通信链接失败异常

java - 在 GLSurcfaceView 回调期间从 C++ 回调到 Java 的问题

linux - epoll - EPOLLET 容易出现竞争条件吗?

asp.net - bytearray 到图像 asp.net

java - 按降序对特定成员/状态的对象列表进行排序

java - 在 JPA 查询中使用 group by 和 having

sockets - HAProxy 无法启动,无法绑定(bind) UNIX 套接字 [/run/haproxy/admin.sock]

java - 内存不足 java 堆大小

c# - 检查字节是否为 0x00

c# - 从 SqlDataReader 获取 byte[]?