Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [java] Client - Server

  1. #1

    [java] Client - Server

    Salve a tutti ho preso due codici da questo forum:
    - CLient
    - Server

    ECCOLI:


    CLIENT
    codice:
    import java.net.*;
    import java.io.*;
    
    public class Client
    {
        public static void main(String[] args) throws IOException
        {
            InetAddress addr = InetAddress.getByName(null);
            Socket socket = new Socket (addr, Server.PORT);
            try
            {
                BufferedReader in = new BufferedReader(new FileReader("prova.txt"));
                PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
                while (true)
                {
                    String tmp = in.readLine();
                    if (tmp == null)
                        break;
                    else
                        out.println(tmp);
    					System.out.println("Invio la seguente stringa: " + tmp);
                }
    
            }
            finally
            {
                socket.close();
    			System.out.println("Chiudo socket da client...");
            }
        }
    }

    SERVER
    codice:
    import java.io.*;
    import java.net.*;
    
    public class Server
    {
        public static final int PORT = 2000;
        public static void main(String[] args) throws IOException
        {
            ServerSocket ss = new ServerSocket(PORT);
            try
            {
                Socket socket = ss.accept();
    			System.out.println("Connessione da client accettata");
                try
                {
                    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("text2.txt")), true);
                    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    
                    while (true)
                    {
                        String tmp = in.readLine();
                        if (tmp == null)
                            break;
                        else
                            out.println(tmp);
    						System.out.println("Dentro while");
                    }
                }
                finally
                {
                    socket.close();
    				System.out.println("Chiudo il socket");
                }
            }
            finally
            {
                ss.close();
            }
        }
    }
    Perche se non inserisco quel ss.close mi da errore??
    Come faccio a far rimanere il server in attesa ti richieste??
    Ultima domanda: cosa deve inserire nel server per far accettare piu connessioni??

    grazie a tutti e buone feste

  2. #2
    Utente di HTML.it L'avatar di munshun
    Registrato dal
    Sep 2002
    Messaggi
    102
    Ciao,

    per far andare il server "all'infinito" ti basta fare un for senza parametri: mi spiego con un esempio.


    for(;{
    codice
    codice
    codice
    codice
    codice
    }

    in questo modo ovviamente se non forzi la chiusura dell'applicazione questa rimane attiva. per quanto riguarda il secondo problema ( accettare più connessioni ) devi modificare il programma aggiungendo la creazione di un nuovo thread per ogni richiesta di connessione. Ovviamente per il secondo argomento ti conviene cercare della documentazione adatta dato che l'argomento è molto particolare.

    Spero di esserti stato d'aiuto.

    Saluti

    :metallica

    while(!$notte > 5:00)
    {$_GET['PHP_CODE'];}

  3. #3
    Originariamente inviato da munshun
    Ciao,

    per far andare il server "all'infinito" ti basta fare un for senza parametri: mi spiego con un esempio.


    for(;{
    codice
    codice
    codice
    codice
    codice
    }

    in questo modo ovviamente se non forzi la chiusura dell'applicazione questa rimane attiva. per quanto riguarda il secondo problema ( accettare più connessioni ) devi modificare il programma aggiungendo la creazione di un nuovo thread per ogni richiesta di connessione. Ovviamente per il secondo argomento ti conviene cercare della documentazione adatta dato che l'argomento è molto particolare.

    Spero di esserti stato d'aiuto.

    Saluti

    :metallica


    una for all'infinito???? Ma cosi non rallento la macchina facendo continuare la for all'infinito???

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    No, non si rallenta la macchina. Il for infinito (o un while(true) che è la stessa cosa), dice semplicemente di ritornare alla chiamata al metodo accept(), il quale è bloccante: infatti l'esecuzione del server rimane ferma su quella chiamata, finchè non arriva una connessione o la socket viene chiusa (non si usa, quindi, il POLLING come potrebbe sembrare).

    L'uso dei thread è l'ideale per questo genere di applicazioni.

    E' sufficiente fare in modo che, quando il server riceve una connessione, venga creato un thread che la gestisce... e qui, l'uso delle classi anonime, è il top per la gestione di un numero di connessioni non conosciuto a priori.


    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    141
    Qualcuno mi puo spiegare da dove è stato preso questo codice????

    io ho provato .... ma non mi funziona !!!!!!!!1

    dove posso trovare informazioni sulle classi .net.* ???

    --- o qlc progetto java gia fatto client-server sul quale poterci studiare meglio sopra ...????''

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Beh... per le informazioni sulle classi ci sono le API. Le puoi consultare sul sito della sun oppure le puoi scaricare comodamente e consultartele anche off-line.


    Puoi partire da qui: http://java.sun.com/j2se/1.4.2/docs/...kage-tree.html

    Per un programmino semplice semplice funzionante che usi la metodologia Client - Server, avevo postato del codice che trovi qui:

    http://forum.html.it/forum/showthrea...+Client+Server


    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
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    141
    grazie ...mille ... ci studio sopra ...poi al max se ho problemi richiedo.....grazie

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Prego... sempre disponibile.


    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

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 © 2024 vBulletin Solutions, Inc. All rights reserved.