Un piccolo server:
Un piccolo client: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(); } }
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.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(); } }
I messaggio qui sono delle semplici Stringhe, nulla ti vieta di usare classi più complesse che implementano Serializable.
Ciao.![]()



Rispondi quotando