Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedOutputStream;
- import java.io.BufferedReader;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.PrintStream;
- import java.net.Socket;
- import java.net.UnknownHostException;
- public class Klijent implements Runnable {
- static Socket soketZaKomunikaciju = null;
- static BufferedReader serverInput = null;
- static PrintStream serverOutput = null;
- static BufferedReader unosSaTastature = null;
- static String username = ""; //na osnovu imena ce biti dodeljene opcije klijentu
- 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
- public static void daLiSuPodaciValidni(String traziPodatke){
- System.out.println(traziPodatke); //stampamo poruku o tome da unesemo username i password
- boolean daLiJeUnosDobar = false;
- while(!daLiJeUnosDobar){
- String odgovorServeru;
- try {
- odgovorServeru = unosSaTastature.readLine(); //unosimo username i password
- if(odgovorServeru.contains("#")){
- serverOutput.println(odgovorServeru); //saljemo username i password serveru
- username = odgovorServeru.split("#")[0];
- password = odgovorServeru.split("#")[1];
- daLiJeUnosDobar = true;
- }else{
- System.out.println("Poruka mora biti u formatu: username#password"); //ulazimo ponovo u while
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- public static void podesiUsername(String imeIsifra){ //MISLIM DA NIGDE NA KRAJU NIJE KORISCENA OVA METODA
- String nizStringova[] = imeIsifra.split("#");
- username = nizStringova[0];
- }
- public static void meniProgramaPrijevljenih(){
- System.out.println("1. Upload");
- System.out.println("2. Download");
- System.out.println("3. Lista upload-ovanih fajlova");
- System.out.println("4. Izlaz iz programa");
- System.out.print("Izbor:");
- }
- public static void meniProgramaGostiju(){
- System.out.println("1. Download");
- System.out.println("2. Izlaz iz programa");
- }
- public static void primanjeFajla(String imeFajla){
- try {
- int velicinaFajla=1022386;
- int procitaniBajtovi;
- int ukupnoProcitanoBajtova = 0;
- byte [] nizBajtova = new byte [velicinaFajla]; //pravi ogroman niz bajtova (niz od 1022386 bajtova)
- InputStream is = soketZaKomunikaciju.getInputStream(); //za primanje fajla od servera
- FileOutputStream fos = new FileOutputStream(imeFajla+".txt"); //za pravljenje novog fajla
- BufferedOutputStream bos = new BufferedOutputStream(fos); //za pravljenje novog fajla
- procitaniBajtovi = is.read(nizBajtova,0,nizBajtova.length); //ucitava 1022386 bajtova
- ukupnoProcitanoBajtova = procitaniBajtovi;
- bos.write(nizBajtova, 0 , ukupnoProcitanoBajtova);
- bos.flush();
- bos.close();
- } catch (IOException IOe) {
- System.out.println("Najebo si!!!");
- }
- }
- public static void main(String[] args) {
- try {
- soketZaKomunikaciju = new Socket("localhost", 9000);
- serverInput = new BufferedReader(new InputStreamReader(soketZaKomunikaciju.getInputStream()));
- serverOutput = new PrintStream(soketZaKomunikaciju.getOutputStream());
- unosSaTastature = new BufferedReader(new InputStreamReader(System.in));
- System.out.println(serverInput.readLine()); // "uspostavili ste vezu sa serverom"
- String input;
- input = serverInput.readLine(); //prihvatili smo meni od servera
- boolean dobarUnos = false;
- while(!dobarUnos){
- System.out.println(input); //meni se ispisuje
- String odgovor = unosSaTastature.readLine(); //unosimo izbor
- if(odgovor.equals("1") || odgovor.equals("2") || odgovor.equals("3")){
- serverOutput.flush();
- serverOutput.println(odgovor);
- dobarUnos = true;
- }else{
- System.out.println("Ta opcija ne postoji!");
- }
- }
- String granaPrograma = serverInput.readLine();
- System.out.println(granaPrograma); //preko ove poruke granamo program jer se "odgovor" iznad ne vidi dole
- if(granaPrograma.equals(">>>registracija")){ //REGISTRACIJA
- String traziPodatke = serverInput.readLine(); //sacuvali smo poruku "unesite username..."
- /*ovde je bilo ono sto je sada gore u funkciji
- */
- boolean uspesnaRegistracija = false;
- while(!uspesnaRegistracija){
- daLiSuPodaciValidni(traziPodatke);
- String daLiSuPodaciOk = serverInput.readLine();
- if(daLiSuPodaciOk.equals("ok")){
- System.out.println("Uspesno ste se registrovali!!!");
- uspesnaRegistracija = true;
- }else{
- System.out.println("Ovo korisnicko ime i lozinka su zauzeti!!!");
- }
- }// KRAJ REGISTRACIJE
- }else if(granaPrograma.equals(">>>prijava")){//PRIJAVA KLIJENTA
- String traziPodatke = serverInput.readLine(); //sacuvali smo poruku "unesite username..."
- boolean uspesnaPrijava = false;
- while(!uspesnaPrijava){
- daLiSuPodaciValidni(traziPodatke); //ne vraca nista, void je tip
- String daLiSuPodaciOk = serverInput.readLine();
- if(daLiSuPodaciOk.equals("ok")){
- System.out.println("Uspesno ste se prijavili!!!");
- uspesnaPrijava = true;
- }else{
- System.out.println("Ovaj nalog ne postoji, ili ste uneli pogresan username i password!!!");
- }
- }
- //KRAJ PRIJAVE
- }else if(granaPrograma.equals(">>>Ulogovali ste se kao gost")){
- username = "gost";
- }
- //SAD SE U ZAVISNOSTI OD IMENA POJAVLJUJE UPLOAD, DOWNLOAD I LISTA POSLATIH FAJLOVA
- if(username.equals("gost")){
- boolean kraj = false;
- while(!kraj){
- meniProgramaGostiju();
- //int izbor = Integer.parseInt(unosSaTastature.readLine());
- String izbor = unosSaTastature.readLine();
- switch (izbor) {
- case "1":
- System.out.println("DOWNLOAD gost");
- serverOutput.println("2"); //saje 2 serveru da bi on znao da je u pitanju download
- System.out.println("Unesite ID fajla koji zelite da skinete: ");
- String IDzeljenogFajla = unosSaTastature.readLine(); //klijent ukucava ID zeljenog fajla
- serverOutput.println(IDzeljenogFajla); //salje ID fajla koji zelimo da skinemo
- String provera = serverInput.readLine(); //primamo od servera informaciju o tome da li fajl postoji
- System.out.println(provera); //poruka o tome da li fajl postoji ili ne postoji
- if(provera.equals("Fajl je pronadjen!")){
- // primanje fajla!!!
- System.out.println("Kako zelite da se zove fajl?");
- String ukucanoIme = unosSaTastature.readLine();
- primanjeFajla(ukucanoIme); //poziva se funkcija za primanje fajla
- System.out.println("Fajl je primljen!!!");
- }
- break;
- case "2":
- serverOutput.println("4");
- System.out.println("Dovidjenja goste!!!");
- serverInput.close();
- serverOutput.close();
- unosSaTastature.close();
- kraj = true;
- break;
- default:
- System.out.println("Ta opcija ne postoji!");
- break;
- }
- }
- }else{ //za prijavljene klijente
- boolean kraj = false;
- while(!kraj){
- meniProgramaPrijevljenih();
- //int izbor = Integer.parseInt(unosSaTastature.readLine());
- String izbor = unosSaTastature.readLine();
- switch (izbor) {
- case "1":
- //upload
- System.out.println("UPLOAD");
- serverOutput.println("1"); //saljemo serveru 1 da bi znao da se radi o upload-u
- //Naziv fajla
- String nazivFajla = ""; //incijalizacija jer baca gresku dole kod serverOutput.println(nazivFajla);
- boolean daLiJeNazivFajlaOk = false;
- while(!daLiJeNazivFajlaOk){
- System.out.println("Unesite ime fajla: ");
- nazivFajla = unosSaTastature.readLine();
- if(nazivFajla.contains("#")){
- System.out.println("Ime fajla ne sme sadrzati '#' simbol");
- }else{
- daLiJeNazivFajlaOk = true;
- }
- }
- //Naziv fajla KRAJ
- //Manje od 500 slova
- String tekstFajla = ""; //incijalizacija jer baca gresku dole kod serverOutput.println(tekstFajla);
- int brojRedova = 1; //NOVO
- boolean manjeOd500karaktera = false;
- while(!manjeOd500karaktera){
- System.out.println("Koliko redova ce imati vas tekst?"); //NOVO
- brojRedova = Integer.parseInt(unosSaTastature.readLine());//NOVO
- System.out.println("Unesite tekst fajla: ");
- for(int i=0;i<brojRedova;i++){
- tekstFajla = tekstFajla + unosSaTastature.readLine();
- }
- //tekstFajla = unosSaTastature.readLine();
- if(tekstFajla.length() <= 500){
- manjeOd500karaktera = true;
- }else{
- System.out.println("Fajl ne sme imati vise od 500 karaktera!");
- }
- }
- //Manje od 500 slova KRAJ
- serverOutput.println(nazivFajla); //salje naziv fajla
- serverOutput.println(tekstFajla); //salje tekst fajla
- String userNameAndPassword = username +"#" + password;
- serverOutput.println(userNameAndPassword);
- System.out.println("Fajl poslat!!!");
- System.out.println("ID poslatog fajla: " + serverInput.readLine());
- System.out.println();//pravimo novi red
- break;
- case "2":
- //download
- System.out.println("DOWNLOAD");
- serverOutput.println("2"); //saje 2 serveru da bi on znao da je u pitanju download
- System.out.println("Unesite ID fajla koji zelite da skinete: ");
- String IDzeljenogFajla = unosSaTastature.readLine(); //klijent ukucava ID zeljenog fajla
- serverOutput.println(IDzeljenogFajla); //salje ID fajla koji zelimo da skinemo
- String provera = serverInput.readLine(); //primamo od servera informaciju o tome da li fajl postoji
- System.out.println(provera); //poruka o tome da li fajl postoji ili ne postoji
- if(provera.equals("Fajl je pronadjen!")){
- // primanje fajla!!!
- System.out.println("Kako zelite da se zove fajl?");
- String ukucanoIme = unosSaTastature.readLine();
- primanjeFajla(ukucanoIme); //poziva se funkcija za primanje fajla
- System.out.println("Fajl je primljen!!!");
- }
- break;
- case "3":
- //lista uploadovanih fajlova
- System.out.println("LISTA FAJLOVA");
- serverOutput.println("3"); //saje 3 serveru da bi on znao da je u pitanju stampanje liste poslatih fajlova
- String userNameAndPassword2 = username +"#" + password;
- serverOutput.println(userNameAndPassword2); //salje serveru ime i sifru u formatu pera#peri96
- String listaSvihFajlova = serverInput.readLine(); //dobija od servera imena i kodove fajlova koje je klijent poslao
- System.out.println(listaSvihFajlova); //ispisuje sve fajlove koje je klijent poslao
- System.out.println(); //samo da napravi razmak
- break;
- case "4":
- serverOutput.println("4");
- System.out.println("Dovidjenja!!! :-D");
- serverInput.close();
- serverOutput.close();
- unosSaTastature.close();
- kraj = true;
- break;
- default:
- System.out.println("Ta opcija ne postoji!");
- break;
- }
- }
- }
- } catch (UnknownHostException e) {
- System.out.println("UNKNOWN HOST!");
- } catch (IOException e) {
- System.out.println("SERVER IS DOWN!!!");
- }
- }
- @Override
- public void run() {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement