I'm trying to send a file from client to the server, but only ~8kb of lager files(~100kb) transferred. And pngs for example are not completely viewable. I really don't know why it stops earlier.
Sending small testfiles(~1 kb) works great.
The server part:
ServerSocket fileSocket = new ServerSocket(p);
boolean rdy = false;
while (!rdy) {
Socket client = fileSocket.accept();
String fileName = "C:/" + args[2];
String cmd = fileName + "\n";
OutputStreamWriter sWriter = new OutputStreamWriter(client.getOutputStream());
sWriter.write(cmd, 0, cmd.length());
sWriter.flush();
InputStream inStream = client.getInputStream();
FileOutputStream fileStream = new FileOutputStream(fileName);
byte[] buffer = new byte[client.getReceiveBufferSize()];
int bytesRead = 0;
while ((bytesRead = inStream.read(buffer)) > 0) {
fileStream.write(buffer, 0, bytesRead);
}
fileStream.flush();
ta.append("File transfered");
inStream.close();
fileStream.close();
rdy = true;
}
fileSocket.close();
return;
The client part:
Socket client = new Socket(ip, port);
OutputStream outStream = client.getOutputStream();
FileInputStream fileStream = new FileInputStream(fileName);
byte[] buffer = new byte[(int) fileStream.getChannel().size()];
int bytesRead = 0;
System.out.println("Sending file: " + fileName);
while ((bytesRead = fileStream.read(buffer)) > 0) {
outStream.write(buffer, 0, bytesRead);
}
outStream.close();
fileStream.close();
client.close();
return;