Problema Connessione

di il
5 risposte

Problema Connessione

Salve ragazzi come già detto sopra ho un problema a far connettere un server ed un client su due pc differenti.
Client...
import java.io.*;
import java.net.*;
import java.util.*;

public class Client {
Socket socket;
String msg;    
Client() throws UnknownHostException, IOException, ClassNotFoundException{
    try{socket=new Socket("localhost",3000);
   // InetSocketAddress indirizzo= new InetSocketAddress("",300);
  //  socket.connect(indirizzo);
    }
    catch(IOException ex){}    
  invia();   /*ricevi();*/   
    }



public void ricevi() throws IOException, ClassNotFoundException{
   
 File salva = new File ("C:/Users/Lorenzo/Desktop/Nuova cartella/Prova.pdf");
FileOutputStream  fos = new FileOutputStream(salva);
InputStream is = socket.getInputStream();
byte[] buf = new byte[is.available()];
int p = 0;
while((p=is.read(buf))!=-1) {
     fos.write(buf);                                      
}
}
    public void invia() throws IOException{
    ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
    Scanner lettore= new Scanner(System.in);
   for(;;){
    String msg=lettore.nextLine();
    out.writeObject(msg);
   }
    }
public static void main(String[] args) throws UnknownHostException, IOException, ClassNotFoundException {
        Client client = new Client();

}
}

Server...
public class Server {
Socket socket;
ServerSocket sockets;
ObjectInputStream in;
String msg;   
ServerSocketChannel socketChannel;
Server()throws IOException, ClassNotFoundException{
try{
   sockets= new ServerSocket(3000);
socket=sockets.accept();

}
catch(IOException ex){}

   ricevi();/*invia();*/    
}

public void invia() throws IOException{
 File invia = new File("C:/Users/Lorenzo/Desktop/NonBlockingSocket.pdf");
ObjectOutputStream o = new ObjectOutputStream(socket.getOutputStream()); 
FileInputStream is = new FileInputStream(invia);

//in questo modo dovrei sapere la dimensione del file da spedire e creare un
//array di byte di tale dimensione, leggo i dati e li scrivo nella socket
Object i=0;
byte[] dati = new byte[is.available()];
while((i=is.read(dati))!=-1){o.writeObject(dati);}



    }


 public void ricevi() throws IOException, ClassNotFoundException{
   in= new ObjectInputStream(socket.getInputStream());
  do{
    msg = (String)in.readObject();
   System.out.println(msg);
  }while(!msg.contains("Bye"));
   }
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        new Server();
        
    }


}

Ringrazio in anticipo tutti coloro che mi risponderanno.
ps: l'altro computer dove risiede il Server si trova sulla stessa rete del client e uso per connettermi ad internet il router wi-fi della tre(WebCube),quando cerco di connettermi mi da il seguente errore:"java.lang.NullPointerException".
Grazie ancora a tutti

5 Risposte

  • Re: Problema Connessione

    Ho dato un'occhiata al codice che hai postato. Dovresti spostare il metodo invia(); all'interno del blocco try del try - catch perchè ovviamente, è possibile inviare il file solo se la connessione è avvenuta. Inoltre, non è presente l'indirizzo di rete del server, il che presuppone che, client e server girino sulla stessa macchina [ socket=new Socket("localhost",3000); ]. Dovresti utilizzare un oggetto di classe InetAddress opportunamente inizializzato che punti al tuo server.
  • Re: Problema Connessione

    Grazie per la risposta,quando io punto il server,che si trova su un'altro pc,il client genera un' eccezione : null pointer exeption qualcosa del genere. Io inserisco al posto di localhost l'indirizzo IP dell' altra macchina ma non serve a nulla da sempre l'errore
  • Re: Problema Connessione

    Ma il server ascolta sul proprio IP o su localhost ?

    E una volta che attivi il server, questo è raggiungibile dal client con un comando del tipo

    TELNET ipserver 3000
  • Re: Problema Connessione

    Il server ascolta sul proprio IP,allora ho aggiustato il codice come mi hai suggerito infatti non mi genera più errori, il client, ma comunque non riesco a connetterli ho anche Inizializzato l' oggetto InetSocketAddress ma non funziona.
    Ho immesso l'ip dell'altra macchina ma nnt non funziona come devo fare?
    Grazie in anticipo per le risposte
  • Re: Problema Connessione

    Ragazzi ci sono riuscito il mio errore era il seguente
    socket=new Socket("192.168.1.105",300);
    poi ho capito come usare InetAddress e ci sono riuscito in questo modo
    
    Scanner a = new Scanner(System.in);
            String b=a.nextLine();
            InetAddress addr;
            addr= InetAddress.getByName(b);//ho anche provato ad inserire direttamente l' ip tra virgolette ma non funziona bisogna per forza inserirlo in una stringa e poi invocare il metodo (getByName)su quella stringa
            socket=new Socket(addr,3000);
    
    Grazie ancora a tutti e scusate per il disturbo
Devi accedere o registrarti per scrivere nel forum
5 risposte