Я делаю Сетевую систему передачи файлов для передачи любого типа файла по сети в Java. Размер также может быть любым. Поэтому я использовал протокол UTF-8 для этой задачи.
Я предоставляю коды, которые я сделал, но проблема в том, что файл иногда передается без каких-либо проблем. Но иногда на принимающей стороне просто пропускается несколько килобайт данных, что фактически ограничивает правильность открытия файла mp3 / video / image. Я думаю, что проблема с БУФЕРОМ. Я не создаю никакого буфера, который, на мой взгляд, может пригодиться мне.
Я был бы очень признателен, если бы кто-нибудь смог помочь с этой проблемой, чтобы файл был полностью передан.
Клиентская сторона: --- >> Отправитель файла
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());
}