クラス オブジェクトをバイト配列参照hereDatagramPacket
に作成し、この配列をUDP 通信で宛先に送信するために渡します。宛先側では C アプリケーションが実行されており、有線文字を取得しています。これはバイトオーダーに関連していると確信しています。パケットの受信中に C の構造体をクラスに変換することはできますが、その逆はできないためです。以下はsudo - コードです:
// recieving part
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet)
UdpPacket udp = new UdpPacket(buffer);
class UdpPacket implements Serializable
{
int a;
byte []message = new byte[10];
public UdpPacket(byte[] data)
{
ByteBuffer bb = ByteBuffer.wrap(data);
bb.order(ByteOrder.nativeOrder());
a = bb.getInt();
bb.get(message);
}
}
// sending ..
上記のリンクに従ってUdpPacketオブジェクトをバイト配列に変換しますが、宛先には常にジャンク値があります
DatagramSocket clientSocket = new DatagramSocket();
byte [] respoBytes = ObjectSerializer.serializeObject(udpPacket);
ByteBuffer bb = ByteBuffer.wrap(respoBytes);
byte []test = new byte[1116];
bb.order(ByteOrder.nativeOrder()); // tried all the orders here
bb.get(test);
DatagramPacket sendPacket = new DatagramPacket(test,test.length,client, Integer.parseInt(TxtFdPort.getText().toString()));
clientSocket.send(sendPacket)
;