io sto cercando di far comunicare un palmare cn un pc utilizzando il wireless...
ho molti dubbi...
quando faccio new socket nel client e devo specificare indirizzo IP, quale devo mettere? il dubbio mi viene perchè il pc ha un indirizzo dinamico con cui si connette alla rete.. posto il mio codice per farvi capire meglio, il client è il mio palmare e il server il mio pc.
se li faccio partire il server arriva ad aspettare il client e il client non fa new socket ecc ecc... e da eccezione di timout di connessione...
codice:
public class Server {
/*Definizione del numero massimo di connessioni*/
private final static int MAX_CONNECTION = 10;
/*Inizio procedura principale del server*/
public static void StartServer(){
/*Dichiaro la socket del server*/
ServerSocket sk = null;
/*Dichiaro la socket del client*/
Socket client = null;
/*variabile contatore per il numero massimo di client*/
int i = 0;
/*Cattura degli errori nel caso in cui verificasse un eccezione IOException
nello stabilimento di una connessione tra server e client*/
try{
/*Creo un nuovo socket del server in cui indico
il numero della porta 80 ed il numero massimo di connessioni accettabili*/
sk = new ServerSocket(8080, MAX_CONNECTION);
/*ciclo per il limite di connessioni*/
while(i < MAX_CONNECTION){
/*accetto la connessione del client*/
client = sk.accept();
/*evoco una subroutine che svolga le funzioni dedicate al client*/
ServiziClient(client);
i++;
}
/*chiusura della socket del server*/
sk.close();
}
/*Gestione Errori*/
catch(IOException e){
System.out.println("Errore di I/O.");
}
}
/*Questa procedura si occupa di una semplice lettura attraverso la socket,
del messaggio proveniente dal client in formato stringa.*/
private static void ServiziClient(Socket s){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String msg;
while ((msg = br.readLine())!= null){
System.out.println(msg);
}
br.close();
}catch(IOException e){
System.out.println("Errore nella lettura su canale");
}
}
}
codice:
public class Client {
public static void StartClient(){
/*Dichiaro la socket del server*/
Socket s = null;
/*Dichiaro il canale di scrittura*/
PrintWriter pr = null;
try{
/*Connetto attravero la socket il client al server sulla porta 8080*/
s = new Socket("79.42.59.54", 8080);
/*Apro il canale di scrittura attraverso la socket*/
pr = new PrintWriter(s.getOutputStream());
pr.print("Ciao server!");
/*Chiudo in ordine il canale di scrittura e la socket*/
pr.close();
s.close();
}
/*Cattuto l'errore di host sconosciuto che previene eventuali url sbagliati del server*/
catch(UnknownHostException e){
System.out.println("Errore nel riconoscimento dell'Host.");
}
/*Catturo eventuali errori di scrittura su canale*/
catch(IOException d){
System.out.println("Errore si I/O.");
}
}
}