Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [Java] CLIENT - SERVER

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    910

    [Java] CLIENT - SERVER

    Salve a tutti!
    Qualcuno ha qualche esempio su come utilizzare i socket in java..sia per la parte client (connettersi ad un determinato host remoto), che la parte server (mettere il programma in ascolto su un porta)...
    Vi ringrazio...

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Fai una ricerca nel forum... se n'è parlato, tempo fa e avevo postato degli esempi di architetture 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

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    910
    boh...non ho trovato un granchè ...potresti ripostarmeli...
    GRAZIE

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Un piccolo server:
    codice:
    import java.io.*;
    import java.net.*;
    import java.util.Vector;
    
    public class MioServer extends Thread {
    
       private class GestioneClient extends Thread {
          private ObjectInputStream ois;
          private ObjectOutputStream oos;
          public GestioneClient(ObjectInputStream ois, ObjectOutputStream oos) throws Exception {
             this.ois = ois;
             this.oos = oos;
          }
          public void run() {
             try {
                // Attendo l'arrivo di un messaggio
                msg = (String) ois.readObject();
    
                // Elaboro il messaggio arrivato
                System.out.println("Server - ho ricevuto questo messaggio: " + msg);
             } catch (Exception e) { e.printStackTrace(); }
          }
    
          public void inviaMessaggio(String messaggio) {
             // Invio il messaggio al client
             try {
                oos.writeObject(messaggio);
             } catch (Exception e) { e.printStackTrace(); }
          }
       }
    
       private ServerSocket server;
       private Socket client;
       private Vector listaClient;
       private final int PORTA = 2525;
    
       public MioServer() {
          try {
             listaClient = new Vector();
             server = new ServerSocket(PORTA);
          } catch (Exception e) { e.printStackTrace(); }
       }
    
       public void run() {
          try {
    
             // Attendo che un client si colleghi al server
             client = server.accept();
             listaClient.add(
                new GestioneClient(
                   new ObjectInputStream(client.getInputStream()),
                   new ObjectOutputStream(client.getOutputStream())
                )
             );
    
             // Avvio il gestore del client appena connesso
             ((GestioneClient) listaClient.elementAt(listaClient.size()-1)).start();
          } catch (Exception e) { e.printStackTrace(); }
       }
    
       public static void main(String [] args) {
          MioServer ms = new MioServer();
       }
    }
    Un piccolo client:
    codice:
    import java.io.*;
    import java.net.*;
    
    public class MioClient extends Thread {
    
       private Socket server;
       private ObjectInputStream ois;
       private ObjectOutputStream oos;
       private InetAddress mioIndirizzo;
       private final int PORTA = 2525;
       private byte [] ipServer = {/* IP del server */};
       /* Esempio di IP del server: 158.110.0.1
          {(byte) 158, (byte) 110, (byte) 0, (byte) 1} */
    
       public MioClient() {
          try {
             indirizzo = InetAddress.getByAddress(ipServer);
          } catch (Exception e) { e.printStackTrace(); }
       }
    
       public void run() {
          try {
    
             // Mi collego al server
             server = new Socket(indirizzo, PORTA);
             ois = new ObjectInputStream( server.getInputStream() );
             oos = new ObjectOutputStream( server.getOutputStream() );
             while (true) {
                // Attendo il messaggio
                String msg = (String) ois.readObject();
    
                // Elaboro il messaggio
                System.out.println(msg);
             }
    
          } catch (Exception e) { e.printStackTrace(); }
       }
    
       public void inviaMessaggio(String messaggio) {
          // Invio il messaggio
          try {
             oos.writeObject(messaggio);
          } catch (Exception e) { e.printStackTrace(); }
       }
    
       public static void main(String [] args) {
          MioClient mc = new MioClient();
       }
    }
    Questo è un piccolo esempio (non tanto usabile) di Client e di Server. Queste due classi classi possono essere usate all'interno di applicazioni più grandi (ovviamente adattate) per avere un Server in attesa di n clients, e per avere un client che si collega al server.

    I messaggio qui sono delle semplici Stringhe, nulla ti vieta di usare classi più complesse che implementano Serializable.


    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
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    PS: Non li ho provati... li ho scritti al volo quindi non so se ci sono errori sintattici e/o semantici... anche se questi ultimi spero non ci siano.



    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

  6. #6

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    910
    Ecco una piccola classe che ho fatto:

    codice:
    class connettiHost {  
      
        String server,porta; 
    
        connettiHost(String srv, String pra) { 
        
                System.out.println("COSTRUTTORE");
         
         
         
         // VARIABILI      
    	   ObjectInputStream ricevi;
           ObjectOutputStream invia;    
         
        // Prendo i dati inseriti nella maschera precedente! 
           server = srv;
           porta = pra;
      
      
    	   try {
        
              Socket s = new Socket(server, 25);
    		  
    		    ricevi = new ObjectInputStream( s.getInputStream() );
                invia = new ObjectOutputStream( s.getOutputStream() );
                System.out.println("Prima delal while");
             		while (true) {
                	  
                	  // Attendo il messaggio
                		String msg = (String) ricevi.readObject();
    
    	              // Elaboro il messaggio
           		        System.out.println(msg);
                    }
    
        
           }
           
           catch(Exception e) { 
           
             System.out.println(e);
           
           }
           
           
        }
        	
      }

    in poche parole al costruttore di questa classe gli passo il server e la porta...Mi vorrei connettere al server smtp di email.it, ma ricevo questo errore:

    codice:
    java.io.StreamCorruptedException: invalid stream header
    
    Come mai???

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.