PDA

View Full Version : Java Socket!!!



Hardcore
19th February 2010, 20:55
Per delizia o masochismo mi son messo a provare come funziona la Socket per java. E allegria il codice da me fatto funzia in localhost ma se metto il server su un altro pc non riesco a effettuare la connessione....

Riporto i due codici.

---------------SERVER--------------------



public class Server extends Thread {

public void run() {
try{
// Inizializzazione dell'oggetto ServerSocket //
ServerSocket serverFather=new ServerSocket(10001);

//Recupero info sul server //
InetAddress info=serverFather.getInetAddress();
String server= info.getHostAddress();
int port= serverFather.getLocalPort();

System.out.println("[SERVER] Nome:"+server+ "porta: "+port);

//-----------------------------//
//---Ciclo infinito del server ---//
while(true){

System.out.println("[SERVER] Il server va in sleep....");
//Accetto le richieste dal client //
Socket client=serverFather.accept();

System.out.println("[SERVER] Un client si è connesso");
//Trovo le info sul client//
Server_son son=new Server_son(client);
Thread son_t=new Thread(son);
son_t.start();


}

}catch (Exception e){System.out.println("Errore nella creazione della socket...");}
}


--------------CLIENT---------------------



public class Client extends Thread {

InetAddress ip;
String porta;
public Client (InetAddress ind,String port){
ip=ind;
porta=port;
}


public void run(){

System.out.println("[CONNECTING TO "+ip.toString()+":"+porta+" .....]");
try{

Socket client= new Socket(ip,Integer.parseInt(porta));
System.out.println("Connection Established!!!");
InputStream is= new DataInputStream (client.getInputStream());
OutputStream os=new DataOutputStream(client.getOutputStream());



BufferedReader br= new BufferedReader(new InputStreamReader(is));
System.out.println("Response from server: [ "+br.readLine()+" ]");

br.close();
is.close();
os.close();
client.close();

}catch (Exception e){System.out.println("Errore creazione socket...Unable connect to "+ip.toString());
System.out.println(e);
}

}
}


Alla fine del tutto ottengo questo:

[CONNECTING TO /10.1.1.3:10001 .....]
Errore creazione socket...Unable connect to /10.1.1.3
java.net.NoRouteToHostException: No route to host: connect


l'ip del server è 10.1.1.3 inutile dire che lo raggiungo poichè ci sono dentro con ssh...

Tanek
19th February 2010, 21:04
Ma lo slash davanti l'ip? Non è che è quello, sei sicuro che ci vuole (così su due piedi mi suona male, ma è un botto che non faccio cose così a "basso" livello)? Magari lanciandolo su localhost non l'avevi messo e ora dandogli un ip invece hai messo quello slash nei parametri di lancio.

ps: Usa il tag code se no è un casino :P

Hardcore
19th February 2010, 21:09
Ma lo slash davanti l'ip? Non è che è quello, sei sicuro che ci vuole (così su due piedi mi suona male, ma è un botto che non faccio cose così a "basso" livello)? Magari lanciandolo su localhost non l'avevi messo e ora dandogli un ip invece hai messo quello slash nei parametri di lancio.

ps: Usa il tag code se no è un casino :P
tag code??? asd ...

cmq lo slash è la prima cosa a cui ho pensato...

se metto tipo www.google.com li viene www.google.com/indirizzo-ip

quindi penso che quella sbarra divida solo dal nome dell'host all'indirizzo.

quel ip che passo di InetAddress è ottenuto facendo ip=InetAddress.getByName(args[0]);

ora in teoria sul sito della Sun dico che col getByName lui controlla se esiste un host con quel nome o se è un indirizzo ip già valido se ne frega e prova a connettersi..

Eltarion
19th February 2010, 21:18
domanda imbecille: la porta per il socket è aperta sul server e sul router?

Hardcore
19th February 2010, 21:39
uhm...cioè in teoria sono dentro a una lan..devo aprire comunque la porta sul router?

anche se aperta : still not working

Amiag
20th February 2010, 02:15
firewall su uno dei due pc o sul router ? disabilita tutto.

Hardcore
20th February 2010, 13:10
no firewall attivi.