Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Ajd ko moze da odgonetne problem kod citanja iz fajla

[es] :: Java :: Ajd ko moze da odgonetne problem kod citanja iz fajla

[ Pregleda: 1891 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

voxi

Član broj: 67178
Poruke: 328
*.skaut.net.



Profil

icon Ajd ko moze da odgonetne problem kod citanja iz fajla12.01.2007. u 21:11 - pre 210 meseci
Upitanju je programiranje soketa to sve dobro radi. Treba da se prenesu podaci iz text fila do servera i da on njoh vrati na klijent! Medjutim javlja se problem kod citanja iz fajla on procita liniju texta posalje i onda kada ponovo treba da procita sledecu liniju on stane i ceka ne kontam sto evo kod

Code:
 while (( sentence=out.readLine())!=null){
        //for(int i=0;i<5;i++){
            System.out.println("Cita zi fajla");
                
           
         
        //ovde se sa objektom outToServer salju podaci serveru iz sentence promenljive
        outToServer.writeBytes(sentence+'\n' );
        
        //server ->klijent ovde klijentska strana cita podatke koje je poslao server 
        //i dodeljuje je String pormenljivoje
        modifideSentence=inFromServer.readLine();
        
        System.out.println("EVO konacno mozda uspe" +modifideSentence); 
         } 



Ajd mi ovo javite treba mi hitno nelogicno mi je ?
 
Odgovor na temu

SluX

Član broj: 77091
Poruke: 56
217.24.24.*



Profil

icon Re: Ajd ko moze da odgonetne problem kod citanja iz fajla13.01.2007. u 16:24 - pre 210 meseci
Da li si siguran da ceka tu a ne na modifideSentence=inFromServer.readLine();?
 
Odgovor na temu

voxi

Član broj: 67178
Poruke: 328
*.net
Via: [es] mailing liste



Profil

icon Re: Ajd ko moze da odgonetne problem kod citanja iz fajla13.01.2007. u 19:01 - pre 210 meseci
E svaka cast, upravu si ceka na modifideSentence=inFromServer.readLine();!
Kako da resim taj problem ajd javi molim te!
 
Odgovor na temu

SluX

Član broj: 77091
Poruke: 56
*.dynamic.sbb.co.yu.



Profil

icon Re: Ajd ko moze da odgonetne problem kod citanja iz fajla14.01.2007. u 12:37 - pre 210 meseci


Pazi, nema tu resavanja problema- taj poziv inFromServer.readLine(); blokira(zaustavi rad aplikacije) sve dok nesto ne procita ili (nisam 100% siguran, ali bi trebalo) dok ne istekne timeout.

Ako si ti pisao server, pobrini se da on odmah po prijemu podataka sa klijenta vrati odgovor, kako bi to blokiranje sto krace trajalo....
 
Odgovor na temu

Dejan Lozanovic
Dejan Lozanovic
Beograd

Član broj: 691
Poruke: 2325
*.adsl.beotel.net.

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Re: Ajd ko moze da odgonetne problem kod citanja iz fajla14.01.2007. u 13:06 - pre 210 meseci
A mozda bi i neki flush pomogao :) nakon slanja da ti podaci zaista odu do servera, ovako imam osecaj da oni nisu poslati nego stoje u bufferu kod klijenta.
 
Odgovor na temu

voxi

Član broj: 67178
Poruke: 328
*.skaut.net.



Profil

icon Re: Ajd ko moze da odgonetne problem kod citanja iz fajla14.01.2007. u 19:01 - pre 210 meseci
Evo koda i od servera i od klijenta! Prva linija iz datoteke se ocita i posalje uredno zatim druga linija se ocita i posalje ali je server ne prime iako on osluskuje ali jednosatavno ne primi drugu liniju ocitanu iz txt ddtoteke i sve sledece, ne znam zasto?


Code:

       server aplikacija
        public static void main(String[] args) throws Exception {
        
         String clientSentence;
         String capitalizedSentence;
         ServerSocket welcomSocket=new ServerSocket(6001);
         
         while(true){
           
          System.out.println("Pocinje opsluzivanje");   
          
          //server stane i ceka da primi zahatev za prijem od strane klijenta
          Socket connectionSocket =welcomSocket.accept();
          System.out.println("Prihvatio je poziv"); 
          
          // kreira se objekat koji predstavlja tok ka server  od klijenta 
          // Server<-Klijent , ovim tokom klijentska strana salje podatke serveru
          BufferedReader inFromClient=new BufferedReader(new InputStreamReader (connectionSocket.getInputStream()));
          System.out.println("Procioto je ulazni strim klijenta"); 
          
          //kreira se objekat koji predstavlja tok od servera do klijenta
          //server->klijent preko ovog toka server klijentu salje podatek
          DataOutputStream outToClient=new DataOutputStream(connectionSocket.getOutputStream());          
          System.out.println("Procitao je outToClient"); 
          
          //citanje podtataka poslatih od strane klijenta na strani servera
          clientSentence=inFromClient.readLine();
          System.out.println("Procitao je liniju texta"+clientSentence); 
          
          
          capitalizedSentence=clientSentence.toUpperCase()+'\n';  
          //sljanje podatataka klijentu od strane servera
          //outToClient.writeBytes(capitalizedSentence);
          
          System.out.println("Zavrseno opsluzivanje"); 
          System.out.println("");
          
         }   
        
        
    }
   klijent aplikacija
    public static void main(String[] args)throws Exception {        
          
        String sentence;
        String modifideSentence;
         
        BufferedReader out = new BufferedReader(new InputStreamReader(new FileInputStream("D:/Java Programiranje/sampledir/mrezaSoket/Klijent/T1.txt")));
        //BufferedReader out = new BufferedReader(new FileReader("filename"))  
        
        //kreiranje inFromUser objekta kojim se ostvaruje komunikacija sa korisnikom tako sto 
        //korisnik preko tastature moze da unese podatke
        BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));         
                
        //kreiranje soketa na strani klijenta
        Socket clientSocket=new Socket("Ogii",6001);
        
        //kreiranje objekta kojim se stvara tok a on omogucava komunikaciju ka serveru to jest
        //preko njega se salju podaci TCP-ju
       DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
        System.out.println("Poslao je u izlazini tok");
        
        //kreiranje objekta toka od servera ka korisniku i to tako da ono sto stigne od 
        //server ide preko ovog toka i klijent koristi ovaj tok za dobijanje podataka od servera
       BufferedReader inFromServer=new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 
        System.out.println("poslie readLine BufferedReader" );
        
        //klijent sa ovom komandom cita ulazne podatke sa tastature
      //  sentence=inFromUser.readLine();     
         
      // do{
         while (( sentence=out.readLine())!=null){
        //for(int i=0;i<5;i++){
            System.out.println("Cita iz fajla");
             
        //ovde se sa objektom outToServer salju podaci serveru iz sentence promenljive
        outToServer.writeBytes(sentence+'\n' );        
        
        //server ->klijent ovde klijentska strana cita podatke koje je poslao server 
        //i dodeljuje je String pormenljivoje
        System.out.print("Ceka podatke sa servera "+sentence);
      // modifideSentence=inFromServer.readLine();
         
       // System.out.println("EVO konacno mozda uspe" +modifideSentence); 
       
         } 
      // }while (sentence!=null);
        clientSocket.close();        
        
    }
    


 
Odgovor na temu

SluX

Član broj: 77091
Poruke: 56
*.dynamic.sbb.co.yu.



Profil

icon Re: Ajd ko moze da odgonetne problem kod citanja iz fajla14.01.2007. u 19:39 - pre 210 meseci
Ne bih da se bas zadubljujem u kod, posto je vrlo necitko kad mi ga es prikaze(valjda sam navikao previse na eclipse), ali rekao bih da ti problem lezi u kodu servera. Naime, ti imas beskonacnu petlju koja svaki put radi accept-accept radis samo kad ocekujes novu konekciju klijenta(tj, ova metoda vrati Socket kad se novi klijent konektuje).
Posto svaki put acceptujes, a u klijentu se samo 1 konektujes, tu izgleda dolazi do buga-samo prvi put pises u soket koji ti je klijent napravio(tj povezao se na server)-svaki sledeci put server i ne pise nista, jer se novi klijenti nisu konektovali.

Moj predlog resenja: izbaci acceptovanje iznad petlje i radice.
 
Odgovor na temu

voxi

Član broj: 67178
Poruke: 328
*.net
Via: [es] mailing liste



Profil

icon Re: Ajd ko moze da odgonetne problem kod citanja iz fajla14.01.2007. u 20:13 - pre 210 meseci
Hvala na pomoci. Bilo je ptoblem ovo sto si naveo I takodje morao sam da
izbacim iz beskonacne petlje sve objekte koji se vezuju za TCP dati soket
kako nbi za svako ponavljanje pravili posebne strimove ulaza I izlaza

Hvala jos jednom
 
Odgovor na temu

[es] :: Java :: Ajd ko moze da odgonetne problem kod citanja iz fajla

[ Pregleda: 1891 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.