Advertisement
Guest User

Untitled

a guest
Jul 17th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.81 KB | None | 0 0
  1. package serverftp;
  2. import java.io.*;
  3. import java.net.*;
  4.  
  5. public class ServerFTP {
  6.  
  7. static String[] id = {"cp 1","cp 2","cp 3"};
  8. static String[] pass = {"123","456","789"};
  9.  
  10. static BufferedReader[] msgFromClient = new BufferedReader[3];
  11. static PrintWriter[] msgToClient = new PrintWriter[3];
  12. static InputStream[] fileFromClient = new InputStream[3];
  13. static OutputStream[] fileToClient = new OutputStream[3];
  14.  
  15. public static void main(String[] args) throws Exception {
  16. ServerSocket welcome = new ServerSocket(6789);
  17.  
  18. // connecting the three clients
  19. for(int i=0; i<3; i++) {
  20. System.out.println("Waiting for Client "+i);
  21. Socket clientSocket;
  22. clientSocket = welcome.accept();
  23.  
  24. while(true) {
  25. System.out.println("Connecting Client "+i);
  26.  
  27. BufferedReader fromClient = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
  28. PrintWriter toClient = new PrintWriter(clientSocket.getOutputStream(),true);
  29.  
  30. // get id pass from client
  31. String clientId = fromClient.readLine();
  32. System.out.println(clientId);
  33. String clientPass = fromClient.readLine();
  34. System.out.println(clientPass);
  35.  
  36. // check id pass and feedback
  37. if(clientId.equals(id[i]) && clientPass.equals(pass[i])) {
  38. toClient.println("ok");
  39.  
  40. msgFromClient[i] = fromClient;
  41. msgToClient[i] = toClient;
  42. fileFromClient[i] = clientSocket.getInputStream();
  43. fileToClient[i] = clientSocket.getOutputStream();
  44.  
  45. break;
  46. } else {
  47. toClient.println("error");
  48. }
  49. }
  50.  
  51. ClientThread ct = new ClientThread(i);
  52. ct.start();
  53. System.out.println("Client "+i+" connected!");
  54. }
  55.  
  56. welcome.close();
  57. }
  58.  
  59. }
  60.  
  61. class ClientThread extends Thread {
  62. int cid;
  63. String msg;
  64.  
  65. public ClientThread(int client_id) {
  66. cid = client_id;
  67.  
  68. try {
  69. // telling client it's serial
  70. ServerFTP.msgToClient[cid].println(Integer.toString(cid));
  71. } catch(Exception ex) {
  72. ex.printStackTrace();
  73. }
  74. }
  75.  
  76. @Override
  77. public void run() {
  78. while(true) {
  79. try {
  80. // get request from receiver
  81. msg = ServerFTP.msgFromClient[cid].readLine();
  82. if(msg.equals("get list")) {
  83. System.out.println(cid+" "+msg);
  84.  
  85. msg = ServerFTP.msgFromClient[cid].readLine();
  86. System.out.println(cid+" "+msg);
  87.  
  88. for(int i=0; i<3; i++) {
  89. if(i==cid) continue;
  90.  
  91. // send sender request for file list
  92. ServerFTP.msgToClient[i].println("give list");
  93. System.out.println("request sent to client "+i);
  94.  
  95. // get file count from sender
  96. msg = ServerFTP.msgFromClient[i].readLine();
  97. System.out.println("file count caught!!!"); // THIS LINE NEVER EXECUTES
  98. System.out.println("File count "+msg);
  99. }
  100. }
  101. } catch(Exception ex) {
  102. ex.printStackTrace();
  103. }
  104. }
  105. }
  106. }
  107.  
  108. package clientftp_1;
  109. import java.io.*;
  110. import java.net.*;
  111.  
  112. public class ClientFTP_1 {
  113.  
  114. static String[] allPaths = { "...path...\client_1_folder",
  115. "...path...\client_2_folder",
  116. "...path...\client_3_folder"};
  117.  
  118. public static void main(String[] args) throws Exception {
  119. InetAddress inetAddress = InetAddress.getLocalHost();
  120. Socket server = new Socket(inetAddress,6789);
  121. int myId;
  122.  
  123. // login phase
  124. BufferedReader fromUser = new BufferedReader(new InputStreamReader(System.in));
  125. BufferedReader fromServer = new BufferedReader(new InputStreamReader(server.getInputStream()));
  126. PrintWriter toServer = new PrintWriter(server.getOutputStream(),true);
  127. InputStream getFile = server.getInputStream();
  128. OutputStream sendFile = server.getOutputStream();
  129. while(true) {
  130. System.out.println("id: ");
  131. String msg = fromUser.readLine();
  132. toServer.println(msg);
  133.  
  134. System.out.println("password: ");
  135. msg = fromUser.readLine();
  136. toServer.println(msg);
  137.  
  138. msg = fromServer.readLine();
  139. if(msg.equals("ok")) {
  140. System.out.println("Connection Successful!");
  141. myId = Integer.parseInt(fromServer.readLine());
  142. System.out.println("Client serial is: "+myId);
  143. System.out.println("Folder path is: "+allPaths[myId]);
  144. break;
  145. } else {
  146. System.out.println("Error! Try again please.");
  147. }
  148. }
  149.  
  150. ServerThread st = new ServerThread(allPaths[myId],fromUser,fromServer,toServer,getFile,sendFile);
  151. st.start();
  152. UserThread ut = new UserThread(allPaths[myId],fromUser,fromServer,toServer,getFile,sendFile);
  153. ut.start();
  154. }
  155. }
  156.  
  157. class ServerThread extends Thread {
  158. String folderPath;
  159. String msg;
  160. BufferedReader msgFromServer,msgFromUser;
  161. PrintWriter msgToServer;
  162. InputStream fileFromServer;
  163. OutputStream fileToServer;
  164. public ServerThread(String path,BufferedReader fromUser,BufferedReader fromServer,PrintWriter toServer,InputStream getFile,OutputStream sendFile) throws Exception {
  165. folderPath = path;
  166. msgFromUser = fromUser;
  167. msgFromServer = fromServer;
  168. msgToServer = toServer;
  169. fileFromServer = getFile;
  170. fileToServer = sendFile;
  171. }
  172.  
  173. @Override
  174. public void run() {
  175. System.out.println("Server Thread Started");
  176. while(true) {
  177. try {
  178. // receive request
  179. msg = msgFromServer.readLine();
  180. System.out.println("request received from server");
  181. if(msg.equals("give list")) {
  182. // get filenames
  183. File folder = new File(folderPath);
  184. File[] fileList = folder.listFiles();
  185. int cnt = fileList.length;
  186. System.out.println("count calculated");
  187.  
  188. // sned file count to server
  189. msgToServer.println(Integer.toString(cnt));
  190. System.out.println("count sent to server"); // THIS LINE PRINTS
  191. }
  192. } catch(Exception ex) {
  193. ex.printStackTrace();
  194. }
  195. }
  196. }
  197. }
  198.  
  199. class UserThread extends Thread {
  200. String folderPath;
  201. String msg;
  202. BufferedReader msgFromServer,msgFromUser;
  203. PrintWriter msgToServer;
  204. InputStream fileFromServer;
  205. OutputStream fileToServer;
  206. public UserThread(String path,BufferedReader fromUser,BufferedReader fromServer,PrintWriter toServer,InputStream getFile,OutputStream sendFile) throws Exception {
  207. folderPath = path;
  208. msgFromUser = fromUser;
  209. msgFromServer = fromServer;
  210. msgToServer = toServer;
  211. fileFromServer = getFile;
  212. fileToServer = sendFile;
  213. }
  214.  
  215. @Override
  216. public void run() {
  217. System.out.println("USer Thread Started");
  218. while(true) {
  219. try {
  220. // input from user
  221. msg = msgFromUser.readLine();
  222. if(msg.equals("get list")) {
  223. // send request to server
  224. msgToServer.println("get list");
  225. msgToServer.println("fahim list");
  226. }
  227. } catch(Exception ex) {
  228. ex.printStackTrace();
  229. }
  230. }
  231. }
  232. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement