Advertisement
Guest User

Untitled

a guest
Dec 5th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.96 KB | None | 0 0
  1. /*FTClient.java*/
  2.  
  3. import java.io.DataInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.net.Socket;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. public class FTClient extends Thread implements Runnable {
  11. private Socket socket = null;
  12. private DataInputStream inStream = null;
  13. protected int port;
  14.  
  15. public FTClient(int p) {
  16. port = p;
  17. }
  18.  
  19. public void createSocket() {
  20. try {
  21. socket = new Socket("localHost", port);
  22. // socket.
  23. System.out.println("Connected");
  24. inStream = new DataInputStream(socket.getInputStream());
  25. } catch (Exception u) {
  26. u.printStackTrace();
  27. }
  28. }
  29.  
  30. public void receiveFile() {
  31. try {
  32. int fileNamelLen = inStream.readInt();
  33. byte[] fnData = new byte[fileNamelLen];
  34. inStream.readFully(fnData);
  35. String fileName = new String(fnData);
  36. System.out.println("File name is: " + fileName);
  37. int bufferSize = inStream.readInt();
  38. System.out.println("Buffer size is: " + bufferSize);
  39.  
  40. byte[] data = new byte[bufferSize];
  41. FileOutputStream fileOut = new FileOutputStream(fileName + ".tcprec", true);
  42. int totalBytes = 0;
  43. int read = inStream.read(data);
  44. while (read > 0) {
  45. fileOut.write(data);
  46. fileOut.flush();
  47. totalBytes += read;
  48. read = inStream.read(data);
  49. }
  50. System.out.println("File Size is: " + totalBytes);
  51.  
  52. socket.close();
  53. inStream.close();
  54. fileOut.close();
  55. } catch (Exception e) {
  56. e.printStackTrace();
  57. }
  58. }
  59.  
  60. public void run() {
  61.  
  62. createSocket();
  63. receiveFile();
  64.  
  65. /*
  66. * myChatClient.createReadThread(); myChatClient.createWriteThread();
  67. */
  68. }
  69.  
  70. public static void main(String args[]) throws IOException {
  71. final int MB = 1024 * 1024;
  72.  
  73. List<Thread> threads = new ArrayList<>();
  74.  
  75. int nParts = 9; //same as number in server
  76. String filename = "file.txt"; //same as on server
  77.  
  78. int startPort = 3339;
  79. for (int i = 0; i < nParts; i++) {
  80.  
  81. TCPClient client = new TCPClient(startPort + i);
  82.  
  83. client.start();
  84.  
  85. threads.add(client);
  86.  
  87. }
  88.  
  89. // wait for all server/client threads to finish
  90. for (Thread t : threads) {
  91. try {
  92. t.join();
  93. } catch (InterruptedException e) {
  94. e.printStackTrace();
  95. }
  96. }
  97.  
  98.  
  99.  
  100. System.out.println("Threads have Run");
  101. String[] parts = new String[nParts];
  102. for (int i = 0; i < nParts; i++) {
  103. parts[i] = filename + ".part" + i;
  104. }
  105. // join the files
  106. FileSplitterUtil.joinFile("proj-rebuilt.txt", parts);
  107. }
  108. }
  109.  
  110. /*FTServer.java*/
  111. import java.io.DataOutputStream;
  112. import java.io.File;
  113. import java.io.FileInputStream;
  114. import java.io.IOException;
  115. import java.net.ServerSocket;
  116. import java.net.Socket;
  117. import java.util.ArrayList;
  118. import java.util.List;
  119.  
  120. public class FTServer extends Thread implements Runnable {
  121. private ServerSocket serverSocket = null;
  122. private Socket socket = null;
  123. private DataOutputStream outStream = null;
  124. private final int bufferSize = 8192; // buffer size 512 kb
  125. protected int port;
  126. String filename;
  127.  
  128. public FTServer(int p, String filename) {
  129. this.filename = filename;
  130. port = p;
  131. }
  132.  
  133. public void createSocket() {
  134. try {
  135. serverSocket = new ServerSocket(port);
  136. socket = serverSocket.accept();
  137.  
  138. outStream = new DataOutputStream(socket.getOutputStream());
  139. System.out.println("Connected");
  140.  
  141. } catch (IOException io) {
  142. io.printStackTrace();
  143. }
  144. }
  145.  
  146. public void sendFile() {
  147. try {
  148. File file = new File(filename);
  149. FileInputStream fileInput = new FileInputStream(file);
  150. int fileSize = (int) file.length();
  151. System.out.println("[Server] Filesize is :" + fileSize);
  152. byte[] data = new byte[bufferSize];
  153.  
  154. // first the filename
  155. byte[] fnData = filename.getBytes("UTF-8");
  156. int fnLen = fnData.length;
  157.  
  158. outStream.writeInt(fnLen);
  159. outStream.write(fnData);
  160. outStream.flush();
  161. // then send the size of the buffer to the client
  162. outStream.writeInt(bufferSize);
  163. outStream.flush();
  164.  
  165. int read = fileInput.read(data);
  166. while (read > 0) {
  167. outStream.write(data);
  168. outStream.flush();
  169. read = fileInput.read(data);
  170. }
  171.  
  172. fileInput.close();
  173. serverSocket.close();
  174. socket.close();
  175. } catch (Exception e) {
  176. e.printStackTrace();
  177. }
  178. }
  179.  
  180. public void run() {
  181.  
  182. createSocket();
  183. sendFile();
  184. }
  185.  
  186.  
  187. public static void main(String args[]) throws IOException {
  188. final int MB = 1024 * 1024;
  189. int[] sizes = { 100 * MB, 200 * MB, 300 * MB, 400 * MB, 500 * MB, 600 * MB, 900 * MB };
  190. String[] splitNames = FileSplitterUtil.splitFile("file.txt", sizes);
  191.  
  192. List<Thread> threads = new ArrayList<>();
  193.  
  194. int startPort = 3339;
  195. for (int i = 0; i < splitNames.length; i++) {
  196. FTServer server = new FTServer(startPort + i, splitNames[i]);
  197. server.start();
  198. threads.add(server);
  199. }
  200.  
  201. // wait for all server/client threads to finish
  202. for (Thread t : threads) {
  203. try {
  204. t.join();
  205. } catch (InterruptedException e) {
  206. e.printStackTrace();
  207. }
  208. }
  209.  
  210.  
  211. }
  212. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement