PDA

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!