ファイルを読み取り、ネットワーク経由で別のプログラム (P2) に送信するプログラム (P1) を Java で作成しています。P2 に送信する必要があるファイルとその他の情報を保持する DataGrama というクラスを作成しました。データを受信するには P2 でバイト配列が必要ですが、P2 は受信するパケットのサイズを認識していません。必要なサイズのバイト配列を作成できるように、packetSize を検出する方法はありますか?
これが私がP1に持っているものです:
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName(textField.getText());
byte[] sendData = new byte[(int)myFile.length()];
FileInputStream convertToBytes = new FileInputStream(myFile);
convertToBytes.read(sendData);
convertToBytes.close();
DataGrama dataGrama = new DataGrama(0, 0, sendData);
sendData = serializeClass(dataGrama);
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9874);
clientSocket.send(sendPacket);
P2 では、次のようなものがあります。
byte[] receiveData = new byte[50]; //<-- Here is the problem, how do I discover the size of the incoming byte array?
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);