Advertisement
Guest User

Untitled

a guest
Dec 21st, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.99 KB | None | 0 0
  1. import java.io.BufferedOutputStream;
  2. import java.io.BufferedReader;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.io.InputStreamReader;
  7. import java.io.PrintStream;
  8. import java.net.Socket;
  9. import java.net.UnknownHostException;
  10.  
  11. public class Klijent implements Runnable {
  12.  
  13. static Socket soketZaKomunikaciju = null;
  14. static BufferedReader serverInput = null;
  15. static PrintStream serverOutput = null;
  16. static BufferedReader unosSaTastature = null;
  17.  
  18. static String username = ""; //na osnovu imena ce biti dodeljene opcije klijentu
  19. static String password = ""; //treba nam da bi se kasnije napravio fajl sa imenom i lozinkom klijenta u kome se cuvaju imena i id-evi fajlova koje je poslao
  20.  
  21. public static void daLiSuPodaciValidni(String traziPodatke){
  22. System.out.println(traziPodatke); //stampamo poruku o tome da unesemo username i password
  23. boolean daLiJeUnosDobar = false;
  24. while(!daLiJeUnosDobar){
  25. String odgovorServeru;
  26. try {
  27. odgovorServeru = unosSaTastature.readLine(); //unosimo username i password
  28. if(odgovorServeru.contains("#")){
  29. serverOutput.println(odgovorServeru); //saljemo username i password serveru
  30. username = odgovorServeru.split("#")[0];
  31. password = odgovorServeru.split("#")[1];
  32. daLiJeUnosDobar = true;
  33. }else{
  34. System.out.println("Poruka mora biti u formatu: username#password"); //ulazimo ponovo u while
  35. }
  36. } catch (IOException e) {
  37. e.printStackTrace();
  38. }
  39. }
  40. }
  41.  
  42. public static void podesiUsername(String imeIsifra){ //MISLIM DA NIGDE NA KRAJU NIJE KORISCENA OVA METODA
  43. String nizStringova[] = imeIsifra.split("#");
  44. username = nizStringova[0];
  45. }
  46.  
  47. public static void meniProgramaPrijevljenih(){
  48. System.out.println("1. Upload");
  49. System.out.println("2. Download");
  50. System.out.println("3. Lista upload-ovanih fajlova");
  51. System.out.println("4. Izlaz iz programa");
  52. System.out.print("Izbor:");
  53. }
  54.  
  55. public static void meniProgramaGostiju(){
  56. System.out.println("1. Download");
  57. System.out.println("2. Izlaz iz programa");
  58. }
  59.  
  60. public static void primanjeFajla(String imeFajla){
  61. try {
  62. int velicinaFajla=1022386;
  63. int procitaniBajtovi;
  64. int ukupnoProcitanoBajtova = 0;
  65.  
  66. byte [] nizBajtova = new byte [velicinaFajla]; //pravi ogroman niz bajtova (niz od 1022386 bajtova)
  67. InputStream is = soketZaKomunikaciju.getInputStream(); //za primanje fajla od servera
  68. FileOutputStream fos = new FileOutputStream(imeFajla+".txt"); //za pravljenje novog fajla
  69. BufferedOutputStream bos = new BufferedOutputStream(fos); //za pravljenje novog fajla
  70. procitaniBajtovi = is.read(nizBajtova,0,nizBajtova.length); //ucitava 1022386 bajtova
  71. ukupnoProcitanoBajtova = procitaniBajtovi;
  72.  
  73. bos.write(nizBajtova, 0 , ukupnoProcitanoBajtova);
  74. bos.flush();
  75. bos.close();
  76. } catch (IOException IOe) {
  77. System.out.println("Najebo si!!!");
  78. }
  79. }
  80.  
  81. public static void main(String[] args) {
  82. try {
  83. soketZaKomunikaciju = new Socket("localhost", 9000);
  84. serverInput = new BufferedReader(new InputStreamReader(soketZaKomunikaciju.getInputStream()));
  85. serverOutput = new PrintStream(soketZaKomunikaciju.getOutputStream());
  86. unosSaTastature = new BufferedReader(new InputStreamReader(System.in));
  87.  
  88.  
  89. System.out.println(serverInput.readLine()); // "uspostavili ste vezu sa serverom"
  90.  
  91. String input;
  92.  
  93. input = serverInput.readLine(); //prihvatili smo meni od servera
  94. boolean dobarUnos = false;
  95. while(!dobarUnos){
  96. System.out.println(input); //meni se ispisuje
  97. String odgovor = unosSaTastature.readLine(); //unosimo izbor
  98. if(odgovor.equals("1") || odgovor.equals("2") || odgovor.equals("3")){
  99. serverOutput.flush();
  100. serverOutput.println(odgovor);
  101. dobarUnos = true;
  102. }else{
  103. System.out.println("Ta opcija ne postoji!");
  104. }
  105. }
  106.  
  107. String granaPrograma = serverInput.readLine();
  108. System.out.println(granaPrograma); //preko ove poruke granamo program jer se "odgovor" iznad ne vidi dole
  109.  
  110. if(granaPrograma.equals(">>>registracija")){ //REGISTRACIJA
  111. String traziPodatke = serverInput.readLine(); //sacuvali smo poruku "unesite username..."
  112.  
  113. /*ovde je bilo ono sto je sada gore u funkciji
  114. */
  115. boolean uspesnaRegistracija = false;
  116.  
  117. while(!uspesnaRegistracija){
  118. daLiSuPodaciValidni(traziPodatke);
  119.  
  120. String daLiSuPodaciOk = serverInput.readLine();
  121. if(daLiSuPodaciOk.equals("ok")){
  122. System.out.println("Uspesno ste se registrovali!!!");
  123. uspesnaRegistracija = true;
  124. }else{
  125. System.out.println("Ovo korisnicko ime i lozinka su zauzeti!!!");
  126. }
  127.  
  128. }// KRAJ REGISTRACIJE
  129. }else if(granaPrograma.equals(">>>prijava")){//PRIJAVA KLIJENTA
  130. String traziPodatke = serverInput.readLine(); //sacuvali smo poruku "unesite username..."
  131. boolean uspesnaPrijava = false;
  132.  
  133. while(!uspesnaPrijava){
  134. daLiSuPodaciValidni(traziPodatke); //ne vraca nista, void je tip
  135.  
  136. String daLiSuPodaciOk = serverInput.readLine();
  137. if(daLiSuPodaciOk.equals("ok")){
  138. System.out.println("Uspesno ste se prijavili!!!");
  139. uspesnaPrijava = true;
  140. }else{
  141. System.out.println("Ovaj nalog ne postoji, ili ste uneli pogresan username i password!!!");
  142. }
  143. }
  144. //KRAJ PRIJAVE
  145. }else if(granaPrograma.equals(">>>Ulogovali ste se kao gost")){
  146. username = "gost";
  147. }
  148.  
  149.  
  150. //SAD SE U ZAVISNOSTI OD IMENA POJAVLJUJE UPLOAD, DOWNLOAD I LISTA POSLATIH FAJLOVA
  151.  
  152. if(username.equals("gost")){
  153. boolean kraj = false;
  154. while(!kraj){
  155. meniProgramaGostiju();
  156. //int izbor = Integer.parseInt(unosSaTastature.readLine());
  157. String izbor = unosSaTastature.readLine();
  158. switch (izbor) {
  159. case "1":
  160. System.out.println("DOWNLOAD gost");
  161. serverOutput.println("2"); //saje 2 serveru da bi on znao da je u pitanju download
  162. System.out.println("Unesite ID fajla koji zelite da skinete: ");
  163. String IDzeljenogFajla = unosSaTastature.readLine(); //klijent ukucava ID zeljenog fajla
  164. serverOutput.println(IDzeljenogFajla); //salje ID fajla koji zelimo da skinemo
  165. String provera = serverInput.readLine(); //primamo od servera informaciju o tome da li fajl postoji
  166. System.out.println(provera); //poruka o tome da li fajl postoji ili ne postoji
  167. if(provera.equals("Fajl je pronadjen!")){
  168. // primanje fajla!!!
  169. System.out.println("Kako zelite da se zove fajl?");
  170. String ukucanoIme = unosSaTastature.readLine();
  171. primanjeFajla(ukucanoIme); //poziva se funkcija za primanje fajla
  172. System.out.println("Fajl je primljen!!!");
  173. }
  174. break;
  175. case "2":
  176. serverOutput.println("4");
  177. System.out.println("Dovidjenja goste!!!");
  178. serverInput.close();
  179. serverOutput.close();
  180. unosSaTastature.close();
  181. kraj = true;
  182. break;
  183. default:
  184. System.out.println("Ta opcija ne postoji!");
  185. break;
  186. }
  187. }
  188. }else{ //za prijavljene klijente
  189. boolean kraj = false;
  190. while(!kraj){
  191. meniProgramaPrijevljenih();
  192. //int izbor = Integer.parseInt(unosSaTastature.readLine());
  193. String izbor = unosSaTastature.readLine();
  194. switch (izbor) {
  195. case "1":
  196. //upload
  197. System.out.println("UPLOAD");
  198. serverOutput.println("1"); //saljemo serveru 1 da bi znao da se radi o upload-u
  199. //Naziv fajla
  200. String nazivFajla = ""; //incijalizacija jer baca gresku dole kod serverOutput.println(nazivFajla);
  201. boolean daLiJeNazivFajlaOk = false;
  202. while(!daLiJeNazivFajlaOk){
  203. System.out.println("Unesite ime fajla: ");
  204. nazivFajla = unosSaTastature.readLine();
  205. if(nazivFajla.contains("#")){
  206. System.out.println("Ime fajla ne sme sadrzati '#' simbol");
  207. }else{
  208. daLiJeNazivFajlaOk = true;
  209. }
  210. }
  211. //Naziv fajla KRAJ
  212. //Manje od 500 slova
  213. String tekstFajla = ""; //incijalizacija jer baca gresku dole kod serverOutput.println(tekstFajla);
  214. int brojRedova = 1; //NOVO
  215. boolean manjeOd500karaktera = false;
  216. while(!manjeOd500karaktera){
  217.  
  218. System.out.println("Koliko redova ce imati vas tekst?"); //NOVO
  219. brojRedova = Integer.parseInt(unosSaTastature.readLine());//NOVO
  220.  
  221. System.out.println("Unesite tekst fajla: ");
  222. for(int i=0;i<brojRedova;i++){
  223. tekstFajla = tekstFajla + unosSaTastature.readLine();
  224. }
  225. //tekstFajla = unosSaTastature.readLine();
  226. if(tekstFajla.length() <= 500){
  227. manjeOd500karaktera = true;
  228. }else{
  229. System.out.println("Fajl ne sme imati vise od 500 karaktera!");
  230. }
  231. }
  232. //Manje od 500 slova KRAJ
  233.  
  234. serverOutput.println(nazivFajla); //salje naziv fajla
  235. serverOutput.println(tekstFajla); //salje tekst fajla
  236. String userNameAndPassword = username +"#" + password;
  237. serverOutput.println(userNameAndPassword);
  238. System.out.println("Fajl poslat!!!");
  239. System.out.println("ID poslatog fajla: " + serverInput.readLine());
  240. System.out.println();//pravimo novi red
  241. break;
  242. case "2":
  243. //download
  244. System.out.println("DOWNLOAD");
  245. serverOutput.println("2"); //saje 2 serveru da bi on znao da je u pitanju download
  246. System.out.println("Unesite ID fajla koji zelite da skinete: ");
  247. String IDzeljenogFajla = unosSaTastature.readLine(); //klijent ukucava ID zeljenog fajla
  248. serverOutput.println(IDzeljenogFajla); //salje ID fajla koji zelimo da skinemo
  249. String provera = serverInput.readLine(); //primamo od servera informaciju o tome da li fajl postoji
  250. System.out.println(provera); //poruka o tome da li fajl postoji ili ne postoji
  251. if(provera.equals("Fajl je pronadjen!")){
  252. // primanje fajla!!!
  253. System.out.println("Kako zelite da se zove fajl?");
  254. String ukucanoIme = unosSaTastature.readLine();
  255. primanjeFajla(ukucanoIme); //poziva se funkcija za primanje fajla
  256. System.out.println("Fajl je primljen!!!");
  257. }
  258. break;
  259. case "3":
  260. //lista uploadovanih fajlova
  261. System.out.println("LISTA FAJLOVA");
  262. serverOutput.println("3"); //saje 3 serveru da bi on znao da je u pitanju stampanje liste poslatih fajlova
  263. String userNameAndPassword2 = username +"#" + password;
  264. serverOutput.println(userNameAndPassword2); //salje serveru ime i sifru u formatu pera#peri96
  265.  
  266. String listaSvihFajlova = serverInput.readLine(); //dobija od servera imena i kodove fajlova koje je klijent poslao
  267. System.out.println(listaSvihFajlova); //ispisuje sve fajlove koje je klijent poslao
  268. System.out.println(); //samo da napravi razmak
  269. break;
  270. case "4":
  271. serverOutput.println("4");
  272. System.out.println("Dovidjenja!!! :-D");
  273. serverInput.close();
  274. serverOutput.close();
  275. unosSaTastature.close();
  276. kraj = true;
  277. break;
  278. default:
  279. System.out.println("Ta opcija ne postoji!");
  280. break;
  281. }
  282.  
  283. }
  284. }
  285.  
  286.  
  287. } catch (UnknownHostException e) {
  288. System.out.println("UNKNOWN HOST!");
  289. } catch (IOException e) {
  290. System.out.println("SERVER IS DOWN!!!");
  291. }
  292. }
  293.  
  294.  
  295. @Override
  296. public void run() {
  297.  
  298. }
  299.  
  300. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement