View Full Version : [JAVA]Help!
entrylevel
17-09-2006, 20:36
Dovrei sviluppare un programma in Java che mi permetta di eseguire queste operazioni;chi mi puo' aiutare?
Client: invia al server un numero intero random compreso tra 1 e 100,
aspetta una risposta e la stampa
Server concorrente: aspetta 2 client e poi calcola il max dei valori
ricevuti dai 2 client. Quindi stampa a video i valori ricevuti e il
vincitore. In fine manda al client vincitore la stringa "Hai
vinto!"
e allo sconfitto la stringa "Hai perso!".
GRAZIE A TUTTI!!
TempestaT400
17-09-2006, 23:12
un attimo.. il tempo di scriverti il codice e te lo posto!
entrylevel
18-09-2006, 00:03
grazie mille!!:-)
Allora resto in attesa.. :D
TempestaT400
18-09-2006, 00:23
Ma lo devi fare funzionare su locale oppure devi simulare una conv con un server qualsiasi.. lo vorrei sapere per gli indirizzi e le porte!!!
TempestaT400
18-09-2006, 00:38
L'ho fatto per il funzionamento in locale.!.
Ti posto le varie classi ed anche la classe test...
-------------------------------------------------------------------------
CLASSE:-----> CLIENT
-------------------------------------------------------------------------
import java.io.*;
import java.net.*;
public class Client extends Thread{
int port, receivePort;
InetAddress addr;
Socket socket;
BufferedReader in = null;
PrintWriter out = null;
int id;
public Client(int id, InetAddress serverAddr, int serverPort, int receivePort){
this.id = id;
this.addr = serverAddr;
this.port= serverPort;
this.receivePort = receivePort;
}
public void run(){
inviaNumero();
aspettaResponso();
}
private void inviaNumero(){
try{
int val = (int)(Math.random()*100)+1;
socket = new Socket(addr, port);
OutputStreamWriter osw = new OutputStreamWriter(socket.getOutputStream());
out = new PrintWriter(new BufferedWriter(osw),true);
out.println(val);
socket.close();
}catch(Exception e){}
}
private void aspettaResponso(){
try{
ServerSocket server = new ServerSocket(receivePort);
Socket client = server.accept();
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
String line = in.readLine();
System.out.println("client:"+id+" -> "+line);
in.close();
server.close();
}catch(Exception e){}
}
}
-------------------------------------------------------------------------
CLASSE: --> SERVER
-------------------------------------------------------------------------
import java.io.*;
import java.net.*;
public class Server extends Thread{
private BufferedReader in;
private PrintWriter out;
private int port, clientPort;
private Integer [] dati = new Integer[2];
private InetAddress [] clientIP = new InetAddress[2];
public Server(int port, int clientPort){
this.clientPort = clientPort;
this.port = port;
}
public void run(){
aspettaValori();
inviaRisultati();
System.out.println("Server inattivo");
}
private void aspettaValori(){
try{
ServerSocket server = new ServerSocket(port);
System.out.println("Server in attesa!");
for(int i = 0; i<dati.length; i++){
Socket client = server.accept();
System.out.println("accettata conn");
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
String line = in.readLine();
dati[i] = new Integer(line);
clientIP[i] = client.getInetAddress();
System.out.println("il client: "+clientIP[i]+" ha inviato il valore:"+dati[i]);
}
}catch(Exception e){}
}
private void inviaRisultati(){
try{
String mess [] = new String [2];
if(dati[0].intValue()>dati[1].intValue()){
mess[0] = "Hai vinto";
mess[1] = "Hai perso";
}
else{
mess[0] = "Hai perso";
mess[1] = "Hai vinto";
}
Socket s = new Socket(clientIP[0], clientPort);
out = new PrintWriter(new OutputStreamWriter(s.getOutputStream()), true);
out.println("Hai vinto");
out.close();
s.close();
s = new Socket(clientIP[1], clientPort);
out = new PrintWriter(new OutputStreamWriter(s.getOutputStream()), true);
out.println("Hai perso");
out.close();
s.close();
}catch(Exception e){}
}
}
-------------------------------------------------------------------------
CLASSE TEST
-------------------------------------------------------------------------
import java.net.*;
public class Test {
public static void main(String [] args){
try{
InetAddress local = InetAddress.getByName("127.0.0.1");
new Thread(new Server(3000, 4000)).start();
new Thread(new Client(1, local, 3000, 4000)).start();
new Thread(new Client(2, local, 3000, 4000)).start();
}catch(Exception e){}
}
}
-------------------------------------------------------------------------
Spero di esserti stato d'aiuto!
L'ho fatto in poco tempo e quindi il codice non è tanto ottimizzato!
Nel caso hai qualche problema contattami..
Bye bye
entrylevel
18-09-2006, 08:27
GRRRRRRRRRRRRAZIE MILLEEEEEEE!!!!!!!!!!!!:d
Gentilissimo!!!!!!!!
In caso di problemi ti faccio sapere...
A presto
Ciao!!
TempestaT400
18-09-2006, 08:54
Figurati.. non mi è costato niente!!!
Ciao ciao!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.