私はネットワーク上の任意の種類のファイルをJavaで転送するためのネットワークファイル転送システムを作っています。その大きさはいかなる種類のものであってもよい。したがって、私はタスクのためにUTF-8プロトコルを使用しました。Javaでソケットを介したファイル転送
私が作成したコードを提供していますが、ファイルがそのまま転送されることがありますが、何の問題もありません。しかし、実際にはmp3/video/imageファイルが正しく開かれるように制限するデータのほんの数kbは受信側でスキップされることがあります。問題はBUFFERだと思う。私はバッファを作成していない、今、私はいくつかの私の役に立つかもしれないと思う。
誰かが問題に関する助けをしてファイルが完全に転送されるようになったら本当に感謝します。
クライアント側:--- >>ファイルの送信者
Socket clientsocket = new Socket(host,6789); // host contains the ip address of the remote server
DataOutputStream outtoserver = new DataOutputStream(clientsocket.getOutputStream());
try
{
int r=0;
FileInputStream fromFile1 = new FileInputStream(path); // "path" is the of the file being sent.
while(r!=-1)
{
r = fromFile1.read();
outtoserver.writeUTF(r+"");
}
}
catch(Exception e)
{
System.out.println(e.toString());
}
clientsocket.close();
サーバー側:--- >>ファイルレシーバー
ServerSocket welcome = new ServerSocket(6789);
Socket conn = welcome.accept();
try
{
String r1 = new String();
int r=0;
FileOutputStream toFile1 = new FileOutputStream(path); // "path" is the of the file being received.
BufferedOutputStream toFile= new BufferedOutputStream(toFile1);
DataInputStream recv = new DataInputStream(conn.getInputStream());
while(r!=-1)
{
r1 = recv.readUTF();
r = Integer.parseInt(r1);
toFile.write(r);
}
}
catch(Exception e)
{
System.out.println(e.toString());
}
ファイルを扱う場合、なぜエンコーディングが気になるのですか?バイトを書きます。 –