Peduz91
19-07-2014, 18:49
Salve belli, mi servirebbe una mano per capire il codice. L'ho preso in parte da un sito e poi l'ho modificato sperando potesse servirmi. L'idea di fondo è che vorrei aprire 3 client, mandare da uno un messaggio al server il quale lo rimanda ad un altro client. Questo mi serve adesso per esercizio ma poi ci devo fare un programma serio sopra. Grazie a chi mi risponderà. Ora posto il codice, scusate se non ho messo la discussione nel luogo adatto o se non rispetto alcune regole:
CLIENT:
import java.io.*;
import java.net.*;
import java.util.*;
public class Client {
public Client(){
}
public static Socket socket = null;
public static void main(String args []){
Scanner scan = new Scanner(System.in);
BufferedReader in = null;
PrintStream out = null;
String message, secondMessage;
//aggiunto di mio
BufferedReader scrittura = null;
Scanner input = new Scanner(System.in);
String s = "";
try {
socket = new Socket("localhost", 40000);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintStream(socket.getOutputStream(), true);
scrittura = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Inserire messaggio da inviare al server");
synchronized(s){
s = scan.nextLine();
out.println(s);
}
message = in.readLine();
secondMessage = in.readLine();
System.out.println(message);
System.out.println("Messaggio ricevuto: " + secondMessage);
out.flush();
out.close();
in.close();
socket.close();
} catch(Exception e) {
System.err.println("Errore col client " + e);
}
}
public static void send(String message, Socket socket){
BufferedReader in = null;
PrintStream out = null;
try {
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintStream(socket.getOutputStream(), true);
out.println(message);
out.flush();
out.close();
in.close();
socket.close();
} catch(Exception e) {
System.err.println("Errore col client " + e);
}
}
}
SERVER:
import java.io.*;
import java.net.*;
import java.util.*;
public class Server extends Thread{
public static Socket totali [] = new Socket [3];
public static int port = 40000;
private ServerSocket server;
public Server() throws Exception{
server = new ServerSocket(port);
System.out.println("Il server e' in attesa sulla porta " + port);
this.start();
}
public static void main(String argv[]) throws Exception {
new Server();
}
public void run(){
int i = 0;
try{
while(true){
System.out.println("In attesa di connessione...");
Socket client = server.accept();
if(i < 3){
totali[i] = client;
System.out.println("Client: " + totali[i]);
i++;
} else {
System.out.println("I client connessi sono troppi");
}
System.out.println("Connessione accettata e stabilita con " + client.getInetAddress());
Connect connessione = new Connect(client);
}
} catch(Exception e){
System.err.println("Errore di connessione o interazione " + e + " il programma sara' terminato... ");
System.exit(0);
}
}
public class Connect extends Thread{
private Socket client = null;
BufferedReader in = null;
PrintStream out = null;
public Connect() {
}
public Connect(Socket clientSocket) {
client = clientSocket;
try {
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintStream(client.getOutputStream(), true);
} catch(Exception e) {
try { client.close();
}
catch(Exception err) {
System.out.println(err.getMessage());
}
return;
}
this.start();
}
public void run(){
Client cliente = null;
String message = "";
Scanner input = new Scanner(System.in);
try {
cliente = new Client();
System.out.println("Il client scrive: " + in.readLine());
System.out.println("Inserire il messaggio di risposta al Client");
String secondMessage = "Connessione chiusa, arrivederci.";
cliente.send(message, totali[1]);
out.println(secondMessage);
out.flush();
out.close();
in.close();
client.close();
} catch(Exception e) {
System.err.println("Errore di connessione " + e);
}
}
}
}
Spero di non aver infranto delle regole :D
Grazie a chi risponderà :)
CLIENT:
import java.io.*;
import java.net.*;
import java.util.*;
public class Client {
public Client(){
}
public static Socket socket = null;
public static void main(String args []){
Scanner scan = new Scanner(System.in);
BufferedReader in = null;
PrintStream out = null;
String message, secondMessage;
//aggiunto di mio
BufferedReader scrittura = null;
Scanner input = new Scanner(System.in);
String s = "";
try {
socket = new Socket("localhost", 40000);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintStream(socket.getOutputStream(), true);
scrittura = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Inserire messaggio da inviare al server");
synchronized(s){
s = scan.nextLine();
out.println(s);
}
message = in.readLine();
secondMessage = in.readLine();
System.out.println(message);
System.out.println("Messaggio ricevuto: " + secondMessage);
out.flush();
out.close();
in.close();
socket.close();
} catch(Exception e) {
System.err.println("Errore col client " + e);
}
}
public static void send(String message, Socket socket){
BufferedReader in = null;
PrintStream out = null;
try {
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintStream(socket.getOutputStream(), true);
out.println(message);
out.flush();
out.close();
in.close();
socket.close();
} catch(Exception e) {
System.err.println("Errore col client " + e);
}
}
}
SERVER:
import java.io.*;
import java.net.*;
import java.util.*;
public class Server extends Thread{
public static Socket totali [] = new Socket [3];
public static int port = 40000;
private ServerSocket server;
public Server() throws Exception{
server = new ServerSocket(port);
System.out.println("Il server e' in attesa sulla porta " + port);
this.start();
}
public static void main(String argv[]) throws Exception {
new Server();
}
public void run(){
int i = 0;
try{
while(true){
System.out.println("In attesa di connessione...");
Socket client = server.accept();
if(i < 3){
totali[i] = client;
System.out.println("Client: " + totali[i]);
i++;
} else {
System.out.println("I client connessi sono troppi");
}
System.out.println("Connessione accettata e stabilita con " + client.getInetAddress());
Connect connessione = new Connect(client);
}
} catch(Exception e){
System.err.println("Errore di connessione o interazione " + e + " il programma sara' terminato... ");
System.exit(0);
}
}
public class Connect extends Thread{
private Socket client = null;
BufferedReader in = null;
PrintStream out = null;
public Connect() {
}
public Connect(Socket clientSocket) {
client = clientSocket;
try {
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintStream(client.getOutputStream(), true);
} catch(Exception e) {
try { client.close();
}
catch(Exception err) {
System.out.println(err.getMessage());
}
return;
}
this.start();
}
public void run(){
Client cliente = null;
String message = "";
Scanner input = new Scanner(System.in);
try {
cliente = new Client();
System.out.println("Il client scrive: " + in.readLine());
System.out.println("Inserire il messaggio di risposta al Client");
String secondMessage = "Connessione chiusa, arrivederci.";
cliente.send(message, totali[1]);
out.println(secondMessage);
out.flush();
out.close();
in.close();
client.close();
} catch(Exception e) {
System.err.println("Errore di connessione " + e);
}
}
}
}
Spero di non aver infranto delle regole :D
Grazie a chi risponderà :)