Делаю клиент - сервер приложение на Java. Есть пару вопросов:
1) Как сделать докачку? Например кусок файла передалось, а кусок нет, и при следующем запуске этот кусок докачался.
2) Как сделать чтобы передавалось не по байтам, а "кусками" ? Потому что по байтам большие файлы не передашь.
3) Как сделать чтобы с клавиатуры считался пусть к файлы и передавался на сервер? - Это очень очевидно, но после 7 часов не отходя от компа, голова не варит. Что тут нужно сделать? Считаем в переменную, а дальше? Как передать и как принять?
Клиент:
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.Socket;
public class Client {
public static void main(String[] argv) throws Exception {
Socket sock = new Socket("127.0.0.1", 4444);
byte[] mybytearray = new byte[1024];
InputStream is = sock.getInputStream();
FileOutputStream fos = new FileOutputStream("D:/client/file.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
int bytesRead = is.read(mybytearray, 0, mybytearray.length);
bos.write(mybytearray, 0, bytesRead);
bos.close();
sock.close();
}
}
Сервер:
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket servsock = new ServerSocket(4444);
File myFile = new File("D:/server/file.txt");
while (true) {
Socket sock = servsock.accept();
byte[] mybytearray = new byte[(int) myFile.length()];
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(myFile));
bis.read(mybytearray, 0, mybytearray.length);
OutputStream os = sock.getOutputStream();
os.write(mybytearray, 0, mybytearray.length);
os.flush();
sock.close();
}
}
}