我在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);
答案 0 :(得分:0)
您只需将其分配为您希望收到的最大尺寸。
提示:如果您将其分配为+1大小,那么如果您收到的长度为DatagramPacket
的长度(包括+1),则表示您已收到超大尺寸的数据包。