0

ファイルを読み取り、ネットワーク経由で別のプログラム (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);
4

1 に答える 1

0

受け取ると予想される最大サイズとして割り当てる必要があります。

ヒント: そのサイズ +1 として割り当てた場合DatagramPacket、+1 を含むそのサイズの長さのパケットを受信した場合、オーバーサイズのパケットを受信したことがわかります。

于 2013-06-12T00:36:31.400 に答える