TCP はストリームをシミュレートすることを知っているので、通常、データが受信されるとすぐに読み取りが開始されます。そのため、このスニペットを使用して、パケット全体を処理する前に待機するようにします
int packetSize = inputStream.readShort() ;
byte packetBuffer[] = new byte[packetSize];
int byteTrans = 0;
while ( byteTrans < packetSize )
{
inputStream.read( packetBuffer , byteTrans , 1 );
byteTrans++;
}//
ただし、UDP の場合、同じ問題を回避する必要がありますか? TCPは基本的にデータを小さなパケットに分割して送信することでストリームをシミュレートしますが、UDPではプロセス全体をより詳細に制御できるため、そうは思いません。
私が使用するUDPの読み取りに
byte[] packetByte = new byte[packetSize];
DatagramPacket packet = new DatagramPacket(packetByte, packetByte.length);
socket.receive(packet);
UDP 用に同様のシステムを実装する必要がありますか?