Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    24

    Problema Socket

    codice:
    import java.io.*;
    import java.net.*;
    
    public class ContaParoleServer extends Thread{
    	Socket client;
    
    	public ContaParoleServer(Socket client){
    		this.client=client;
    	}
    
    	public static void main(String[] args) throws Exception{
    		ServerSocket server;
    		try{
    			server= new ServerSocket(2000);
    			System.out.println("Server attivato");
    		}catch(Exception e){
    			System.out.println("Errore:impossibile aprire il servizio sulla porta specificata");
    			System.out.println("Controllare che la porta non sia già impegnata da un altro servizio");
    			throw e;
    		}
    		try{
    			while(true){
    				Socket sock=server.accept();
    				Thread tr=new ContaParoleServer(sock);
    				tr.start();
    			}
    		}catch(IOException e){
    			System.out.println("Warning:Errore di I/O occorso");
    		}
    	}
    
    	public void run(){
    		InputStreamReader in=null;
    		OutputStreamWriter out=null;
    		try{
    			in=new InputStreamReader (client.getInputStream(),"latin1");
    			out=new OutputStreamWriter(client.getOutputStream(),"latin1");
    			InetAddress clientAddr=client.getInetAddress();
    			out.write("\n\rSei connesso:inserisci una frase terminata da %\n\r");
    			out.flush();
    			int numParole=0;
    			String str="";
    			String maxStr=null;
    			int c=0;
    			while(c!= '%' && (c=in.read())!=-1){
    				if(c=='%' || c==' '){
    					if(maxStr==null || str.length()>maxStr.length())
    						maxStr=str;
    					str="";
    					numParole++;
    				}
    				else
    					str=str + (char)c;
    			}
    			if(c==-1)
    				throw new IOException();
    			out.write("\n\rNumero delle parole= " + numParole + "\r\n");
    			out.write("Parola di lunghezza massima= " + maxStr + "\r\n");
    			out.write("Numero di caratteri di questa parola = " + maxStr.length());
    			out.flush();
    			out.close();
    		}catch(IOException e){
    			System.out.println("Errore di I/O con il client corrente");
    		}
    		finally{
    			System.out.println("Connessione con il client chiusa");
    		}
    	}
    }
    Compilo il seguente programma ed è ok ma quando cerco di avviarlo mi dice:

    Impossibile trovare il percorso specificato
    Server attivato

    e non va più avanti..Chi mi saprebbe dare una mano ? Vi ringrazio

  2. #2
    Utente di HTML.it L'avatar di Zetato
    Registrato dal
    Nov 2007
    Messaggi
    21
    ho preso il codice l'ho messo in una classe java e funziona correttamente ( dentro eclipse ).... mi da sulla console "Server attivato"... tu come lo stai lanciando ?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    24
    io da textpad... esegui applicazione java..

    Anche a me da Server attivato ma poi nn va avanti..a te esegue tutto il programma cioè ti fa immettere una stringa e ti conta il numero delle parole ecc ecc?

  4. #4
    Utente di HTML.it L'avatar di Zetato
    Registrato dal
    Nov 2007
    Messaggi
    21
    no in effetti ora ho riprovato e non va avanti neanche a me....

  5. #5
    Utente di HTML.it L'avatar di Zetato
    Registrato dal
    Nov 2007
    Messaggi
    21
    guarda ho provato a fare il debug e in effetti lui non è che non chiami il resto dell'applicazione per qualche motivo in particolare..... semplicemente arriva alla fine delle istruzioni del main e non va avanti... tutto qui... è come se ignorasse il resto

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Quando si posta del codice, vanno obbligatoriamente utilizzati i tag CODE previsti dal forum, così come indicato dal Regolamento il quale, come dice la discussione stessa in rilievo, va letto PRIMA di postare.

    Sistemo io il post iniziale e anche il titolo, che non è propriamente indicativo del contenuto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Per quanto riguarda quel codice, direi che non è proprio il massimo.

    Hai usato un thread: bene, ma l'hai usato malissimo. Tutto il corpo di quel "while(true)" (che è bruttissimo da vedere, sarebbe meglio usare una variabile booleana per controllare il thread), andrebbe spostato all'interno del metodo "run()", altrimenti non ha alcun senso usare un thread.

    Poi... cosa vuol dire che non va avanti? Un server è fatto apposta per fermarsi finchè non arriva una connessione... da qualche parte hai un client che vi si collega sulla porta 2000? Perchè finchè non arriva un client, quello stà lì ad aspettare...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    24
    grazie della risposta!

    Comunque quel codice è stato scritto dal mio prof universitario l'ho copiato pari pari..Ho l'esame tra una settimana e sto messo malissimo!

    Ok sta aspettando una connessione e come faccio ad effettuare la connessione sulla pora 2000?
    grazie ancora

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    24
    Nessuno sa come posso avviare una connessione sulla porta 2000?
    Non so proprio come si faccia!

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da vash46
    Nessuno sa come posso avviare una connessione sulla porta 2000?
    Quel codice che hai postato all'inizio è solo per l'applicazione "server" ... che da sola ovviamente non serve a nulla.
    Devi quindi realizzare un'altra applicazione che faccia da "client" e che usa un Socket (non ServerSocket!) per connettersi al server ed effettuare una comunicazione che rispecchi il "protocollo" che è stato prestabilito.


    P.S. Sono anche io dell'idea che quel codice lascia abbastanza a desiderare ... e se dici che l'ha scritto un prof. ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.