Sto scrivendo il mio primo programma client/server Java che ha appena stabilisce una connessione con il server invia una frase e il server invia la frase di nuovo tutto maiuscolo. Questo è in realtà un esempio appena uscito dal libro, e funziona bene e bene quando sto eseguendo il client e il server sulla stessa macchina e usando localhost per l'indirizzo del server. Ma quando inserisco il programma client su un altro computer, esso va in timeout e non crea mai una connessione con il server. Non sono sicuro del motivo per cui è così e del suo tipo di zoppo che crea il tuo primo client/server e non è in grado di usarlo su due macchine diverse. Ecco il codice del client:semplice Java Client/Server programma
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String argv[]) throws Exception {
String sentence;
String modifiedSentence;
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("localhost", 6789);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromServer.readLine();
System.out.println(modifiedSentence);
clientSocket.close();
}
}
Ecco il codice del server:
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String args[]) throws Exception {
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(6789);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);
}
}
}
L'unica cosa a cambiare quando l'eseguo su due macchine diverse è il programma client fa la sua presa con l'indirizzo IP della macchina con il programma server (che ho ricevuto da whatismyipaddress.com). Grazie mille per qualsiasi aiuto.
Aggiornamento: Sono davvero in un campus e sembra che la sua probabilmente non avermi permesso di usare quella porta casuale. Qualche suggerimento su come scoprire quale porta posso usare e o su una porta che è più che probabile?
ed è possibile connettersi al server tramite questo indirizzo IP altrimenti? (Usando ping/telnet/traceroute/etc.) – McDowell
Prima di provare a eseguire il debug del programma, provate e assicuratevi di poter eseguire prima il ping dell'altro computer. In questo modo sai che la rete non è la colpa. –
Ho provato il ping e ha funzionato. – Anton