Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*FTClient.java*/
- import java.io.DataInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.net.Socket;
- import java.util.ArrayList;
- import java.util.List;
- public class FTClient extends Thread implements Runnable {
- private Socket socket = null;
- private DataInputStream inStream = null;
- protected int port;
- public FTClient(int p) {
- port = p;
- }
- public void createSocket() {
- try {
- socket = new Socket("localHost", port);
- // socket.
- System.out.println("Connected");
- inStream = new DataInputStream(socket.getInputStream());
- } catch (Exception u) {
- u.printStackTrace();
- }
- }
- public void receiveFile() {
- try {
- int fileNamelLen = inStream.readInt();
- byte[] fnData = new byte[fileNamelLen];
- inStream.readFully(fnData);
- String fileName = new String(fnData);
- System.out.println("File name is: " + fileName);
- int bufferSize = inStream.readInt();
- System.out.println("Buffer size is: " + bufferSize);
- byte[] data = new byte[bufferSize];
- FileOutputStream fileOut = new FileOutputStream(fileName + ".tcprec", true);
- int totalBytes = 0;
- int read = inStream.read(data);
- while (read > 0) {
- fileOut.write(data);
- fileOut.flush();
- totalBytes += read;
- read = inStream.read(data);
- }
- System.out.println("File Size is: " + totalBytes);
- socket.close();
- inStream.close();
- fileOut.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public void run() {
- createSocket();
- receiveFile();
- /*
- * myChatClient.createReadThread(); myChatClient.createWriteThread();
- */
- }
- public static void main(String args[]) throws IOException {
- final int MB = 1024 * 1024;
- List<Thread> threads = new ArrayList<>();
- int nParts = 9; //same as number in server
- String filename = "file.txt"; //same as on server
- int startPort = 3339;
- for (int i = 0; i < nParts; i++) {
- TCPClient client = new TCPClient(startPort + i);
- client.start();
- threads.add(client);
- }
- // wait for all server/client threads to finish
- for (Thread t : threads) {
- try {
- t.join();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- System.out.println("Threads have Run");
- String[] parts = new String[nParts];
- for (int i = 0; i < nParts; i++) {
- parts[i] = filename + ".part" + i;
- }
- // join the files
- FileSplitterUtil.joinFile("proj-rebuilt.txt", parts);
- }
- }
- /*FTServer.java*/
- import java.io.DataOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.util.ArrayList;
- import java.util.List;
- public class FTServer extends Thread implements Runnable {
- private ServerSocket serverSocket = null;
- private Socket socket = null;
- private DataOutputStream outStream = null;
- private final int bufferSize = 8192; // buffer size 512 kb
- protected int port;
- String filename;
- public FTServer(int p, String filename) {
- this.filename = filename;
- port = p;
- }
- public void createSocket() {
- try {
- serverSocket = new ServerSocket(port);
- socket = serverSocket.accept();
- outStream = new DataOutputStream(socket.getOutputStream());
- System.out.println("Connected");
- } catch (IOException io) {
- io.printStackTrace();
- }
- }
- public void sendFile() {
- try {
- File file = new File(filename);
- FileInputStream fileInput = new FileInputStream(file);
- int fileSize = (int) file.length();
- System.out.println("[Server] Filesize is :" + fileSize);
- byte[] data = new byte[bufferSize];
- // first the filename
- byte[] fnData = filename.getBytes("UTF-8");
- int fnLen = fnData.length;
- outStream.writeInt(fnLen);
- outStream.write(fnData);
- outStream.flush();
- // then send the size of the buffer to the client
- outStream.writeInt(bufferSize);
- outStream.flush();
- int read = fileInput.read(data);
- while (read > 0) {
- outStream.write(data);
- outStream.flush();
- read = fileInput.read(data);
- }
- fileInput.close();
- serverSocket.close();
- socket.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public void run() {
- createSocket();
- sendFile();
- }
- public static void main(String args[]) throws IOException {
- final int MB = 1024 * 1024;
- int[] sizes = { 100 * MB, 200 * MB, 300 * MB, 400 * MB, 500 * MB, 600 * MB, 900 * MB };
- String[] splitNames = FileSplitterUtil.splitFile("file.txt", sizes);
- List<Thread> threads = new ArrayList<>();
- int startPort = 3339;
- for (int i = 0; i < splitNames.length; i++) {
- FTServer server = new FTServer(startPort + i, splitNames[i]);
- server.start();
- threads.add(server);
- }
- // wait for all server/client threads to finish
- for (Thread t : threads) {
- try {
- t.join();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement