Javaでピアツーピアのファイル共有ネットワークを作ろうとしています。ネットワーク経由でパケットを送信するために UDP 接続を使用しています。しかし、UDP 接続を介して完全なファイルを転送することはできません。ほとんどのパケットが毎回欠落しています。パケットを遅延して送信すると、受信者はすべてのパケットを取得します。
これは送信者の私のコードです:
while (fso.hasNextBlock()){
byte[] temp1 =fso.nextBlock();
int size1 = temp1.length;
packet=new DatagramPacket(temp1, size1,ipaddress,port);
socket.send(packet);
// Thread.sleep(100);
}
これは受信者コードです:
FileOutputStream out=new FileOutputStream(file);
byte[] data=new byte[size];
DatagramPacket packet=new DatagramPacket(data, data.length);
int i=0;
while(true){
socket.receive(packet);
out.write(packet.getData());
System.out.println("packet "+i);
i++;
..... // some codes
}
私のコードに何か問題がありますか?
ピア ツー ピア ネットワークに詳しくありません。ファイル共有ネットワークでは、TCP と UDP のどちらを使用するのが適切ですか?