Я использую этот код для получения данных из сокета UDP и возврата их в виде строки:
byte[] receiveData = new byte[MAX_PACKET_SIZE];
DatagramPacket receivedPacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivedPacket);
return new String(receivedPacket.getData(), 0, receivedPacket.getLength());
Я установил MAX_PACKET_SIZE на 1024, что заставляет Java резервировать 1024-битный байт [] каждый раз, когда приходит пакет. Это вызывает много накладных расходов, если пакет намного меньше, чем 1024 байта.
Есть ли лучший способ сделать это? Может быть, с каким-то циклом чтения while ()? Я еще не очень знаком с Java. :)