Arduino Robotica ed Elettronica

Per entrare in un corso di ingegneria del software ho dovuto fare un piccolo homework di mezza giornata, una chat minimale scritta in java che permette di scambiarsi messaggi in rete tra due pc.

Ovviamente è molto semplice e non pretende di essere qualcosa di utile, ma se vi serve come spunto per imparare a usare i socket o i thread non è male.

Il progetto è composto di tre classi, Target (main), Server e Client. Si richiede ovviamente java installato sul pc per funzionare.

/**
@Class: TARGET
*/

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
public class Target {
public static void main(String[] args) throws IOException {

BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
System.out.println(“\n\n\n\n*** Inserire ‘target’ se sei il server \noppure ‘target <host A>’ se sei il client. ***\n\n”);
String[] indirizzo = input.readLine().split(” “);
if (indirizzo[0].equals(“target”)) {
System.out.println(“\n\n*** Inserisci il tuo nick: ***\n”);
String nick = input.readLine();
System.out.println(“\n\n\n*** Ciao “+nick+”! Benvenuto nella chat. ***\n\n*** Digita /logout per uscire. ***\n”);
if (indirizzo.length==1){
InetAddress ip = InetAddress.getLocalHost();
System.out.print(“*** Il tuo ip locale e’ “);
System.out.println(ip.getHostAddress()+” ***”);
Server s = new Server(nick);
Thread rxs = new Thread(s);
rxs.start();
while(true) {
s.trasmetti();
}
}
else {
Client c = new Client(indirizzo[1], nick);
Thread rxc = new Thread(c);
rxc.start();
while(true) {c.trasmetti();}
}
}
else {
System.out.println(“\n\n*** Devi inserire ‘target’ o ‘target indirizzo’\ndove indirizzo e’ l’ip del server. ***”);
System.out.println(“\n*** Premere Invio per continuare. ***\n”);
BufferedReader reboot = new BufferedReader(new InputStreamReader(System.in));
reboot.readLine();
main(new String[0]);

}
}

}

/**
@Class: SERVER
*/

import java.net.*;
import java.io.*;

public class Server implements Runnable {
private ServerSocket server;
private Socket connessione;
private BufferedReader dalClient;
private PrintStream alClient;
private String name;
private String messaggio = “”;

public Server(String name) {
// Inizializzazione Server
this.name = name;
try {
server = new ServerSocket(1000, 5);
System.out.println(“\n*** Server attivo. In attesa del Client. ***”);
connessione = server.accept();
dalClient = new BufferedReader(new InputStreamReader(connessione.getInputStream()));
alClient = new PrintStream(connessione.getOutputStream());
}
catch(IOException e) {
System.out.println(e);
}
}

public void trasmetti() throws IOException {
// Attende la scrittura di un messaggio valido e la invia al Client
BufferedReader t = new BufferedReader(new InputStreamReader(System.in));
messaggio = t.readLine();
if(messaggio.length()>0) {
if(messaggio.equals(“/logout”)) {
System.out.println(“*** Arrivederci! ***”);
System.exit(0);
}
alClient.println(“* “+name+” scrive: “+messaggio);
}
}

public void run() {
//Thread parallelo in continua attesa di messaggi da ricevere
while(true) {
try {
messaggio = dalClient.readLine();
if(messaggio.length()>0) System.out.println(messaggio);
}
catch (IOException e) {
System.out.println(“*** Il Client si e’ disconnesso. ***”);
System.exit(0);
}
}
}

}

/**
@Class: CLIENT
*/

import java.net.*;
import java.io.*;

public class Client implements Runnable {
private Socket connessione;
private BufferedReader dalServer;
private PrintStream alServer;
private String name;
private String messaggio = “”;

public Client(String address, String nick) {
//Inizializzazione Client
this.name = nick;
try {
connessione = new Socket(address, 1000);
dalServer = new BufferedReader(new InputStreamReader(connessione.getInputStream()));
alServer = new PrintStream(connessione.getOutputStream());
}
catch(IOException e) {
System.out.println(e);
}
}

public void trasmetti() throws IOException {
// Attende la scrittura di un messaggio valido e la invia al Server
BufferedReader t = new BufferedReader(new InputStreamReader(System.in));
messaggio = t.readLine();
if(messaggio.length()>0) {
if(messaggio.equals(“/logout”)) {
System.out.println(“*** Arrivederci! ***”);
System.exit(0);
}
alServer.println(“* “+name+” scrive: “+messaggio);
}

}

public void run() {
//Thread parallelo in continua attesa di messaggi da ricevere
while(true) {
try {
messaggio = dalServer.readLine();
if(messaggio.length()>0) System.out.println(messaggio);
}
catch (IOException e) {
System.out.println(“*** Il Server si e’ disconnesso. ***”);
System.exit(0);
}
}
}
}

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Tag Cloud

%d blogger cliccano Mi Piace per questo: