ecco ciò che ho creato finora:
classe server.java
codice:
package chat;
/**
*/
import java.net.*;
import java.io.*;
public class Server implements Runnable {
private ServerSocket server;
private Socket connessione;
private BufferedReader dalClient;
private PrintStream alClient;
public Server() {
try {
server = new ServerSocket(5000, 5);
System.out.println("Server attivo");
connessione = server.accept();
dalClient = new BufferedReader(new InputStreamReader(connessione.getInputStream()));
alClient = new PrintStream(connessione.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
} // Server()
public void conversazione() {
System.out.print("Thread per l'invio avviato\n");
Thread t = new Thread(this);
t.start();
String messaggio = "";
BufferedReader t1 = new BufferedReader(new InputStreamReader(System.in));
try {
while (true) {
messaggio = t1.readLine();
alClient.println(messaggio);
} // while
} catch (IOException e) {
System.out.println("Conversazione interrotta");
}
} // conversazione()
public void run() {
System.out.print("Thread per la ricezione avviato\n");
String messaggio;
boolean c = true;
while (true) {
try {
messaggio = dalClient.readLine();
System.out.print(messaggio);
} catch (IOException ex) {
c = false;
}
}
}
}
classe client.java
codice:
package chat;
/**
*/
import java.net.*;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Client implements Runnable {
private Socket connessione;
private BufferedReader dalServer;
private PrintStream alServer;
public Client() {
BufferedReader t = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println("Inserire indirizzo server: ");
String indirizzo = "127.0.0.1";
connessione = new Socket(indirizzo, 5000);
dalServer = new BufferedReader(new InputStreamReader(connessione.getInputStream()));
alServer = new PrintStream(connessione.getOutputStream());
} catch (IOException e) {
System.out.println(e);
}
} // Client()
public void conversazione() {
Thread t = new Thread(this);
t.start();
System.out.print("Thread per l'invio avviato\n");
String messaggio = "";
BufferedReader t1 = new BufferedReader(new InputStreamReader(System.in));
try {
int i = 0;
while (i < 5) {
messaggio = t1.readLine();
alServer.println(messaggio);
i++;
} // while
t.interrupt();
connessione.close();
} catch (IOException e) {
System.out.println("Conversazione interrotta");
}
} // conversazione()
public void run() {
System.out.print("Thread per la ricezione avviato\n");
String messaggio;
while (!Thread.interrupted()) {
try {
messaggio = dalServer.readLine();
System.out.print(messaggio);
} catch (IOException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
A parte il fatto che non ho ancora realizzato un controllo come si deve per far terminare la conversazione, che in realtà poi non dovrà terminare mai, se non quando si chiude l'applicazione, mentre in questo caso viene brutalmente fatta finire dopo che il client manda 5 mess, il fatto è che mi sembra che dopo un po' che sta in esecuzione il tutto si rallenti...
ma non capisco se dipende da qualcosa scritto male...
Secondo voi com'è?