我正在用java创建一个程序(P1),它将读取一个文件并通过网络将它发送到另一个程序(P2)。我创建了一个名为 DataGrama 的类,其中包含文件和一些我需要发送到 P2 的其他信息。我需要 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);