信頼性の高い UDP システムを作成しようとしていますが、byte[] を int に変換する必要があります (JCreator 5.0 LE)
DatagramPacket は byte[] 形式のデータを必要とするため、送信できるように int 情報を byte[] に変換する必要があります。
byte[] data = new byte[48];
System.arraycopy(task.getProtocol().byteValue(), 0, data, 0, task.getProtocol().byteValue().length);
System.arraycopy(task.getMessage().byteValue(), 0, data, 4, task.getMessage().byteValue().length);
System.arraycopy(task.getSequence().byteValue(), 0, data, 8, task.getSequence().byteValue().length);
System.arraycopy(task.getAcknowledge().byteValue(), 0, data, 12, task.getAcknowledge().byteValue().length);
for (int i = task.getAcknowledge(); i >= 0 && i > task.getAcknowledge() - 33; i--) {
for (Packet j: tasks) {
if (j.getSequence() == i) {
data[i] = 1;
break;
}
}
}
out = new DatagramPacket(data, data.length, ds.getInetAddress(), portNum);
ds.send(out);
プロトコルはプロトコルIDです
メッセージは送られてくる「情報」
Sequence はパケットのシーケンス番号です。最初に送信されたパケットのシーケンスは 0、次のパケットは 1 などです。
Acknowledge は、パケットが送り返されたことの確認です。
次の部分は、その他の 32 の承認です。メモリを節約するために、4 バイト (int) ではなく、それぞれ 1 バイトに圧縮されます。
さて、パケットを受け取ったら、それを開梱する必要があります。最初に最初の 4 バイト (プロトコル) をチェックして、パケットを無視するかどうかを確認する必要がありますが、バイト配列を int に変換する方法がわかりません。