发现DatagramPacket大小

时间:2013-06-11 23:50:09

标签: java datagram

我在java中创建一个程序(P1),它将读取文件并通过网络将其发送到另一个程序(P2)。 我创建了一个名为DataGrama的类,它保存了我需要发送给P2的文件和其他一些信息。 我需要P2中的一个字节数组来接收数据,但是P2不知道正在传入的数据包的大小,有没有办法发现packetSize所以我可以用我需要的大小创建字节数组? / p>

这是我在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);

1 个答案:

答案 0 :(得分:0)

您只需将其分配为您希望收到的最大尺寸。

提示:如果您将其分配为+1大小,那么如果您收到的长度为DatagramPacket的长度(包括+1),则表示您已收到超大尺寸的数据包。

相关问题