J'écris mon premier programme client/serveur java qui établit simplement une connexion avec le serveur lui envoie une phrase et le serveur renvoie la phrase en majuscule. C'est en fait un exemple tout droit sorti du livre, et ça marche bien et bien quand je cours le client et le serveur sur la même machine et en utilisant localhost pour l'adresse du serveur. Mais quand je mets le programme client sur un autre ordinateur, il expire et ne fait jamais de connexion avec le serveur. Je ne suis pas sûr pourquoi c'est et son genre de lame faire un premier client/serveur et ne pas être en mesure de l'utiliser sur deux machines différentes. Voici le code client:Programme client/serveur Java simple
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();
}
}
Voici le code du serveur:
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);
}
}
}
La seule chose que je change quand je le lance sur deux machines différentes est le programme client fait son socket avec l'adresse IP de la machine avec le programme serveur (que j'ai obtenu de whatismyipaddress.com). Merci beaucoup pour toute aide.
Mise à jour: Je suis en effet sur un campus et il semble que cela ne me permette probablement pas d'utiliser ce port aléatoire. Des suggestions pour savoir quel port je peux utiliser et quel port est plus que probablement autorisé?
Et vous pouvez vous connecter au serveur via cette adresse IP autrement? (En utilisant ping/telnet/traceroute/etc.) – McDowell
Avant d'essayer de déboguer le programme, essayez peut-être de vous assurer que vous pouvez faire un ping sur l'autre ordinateur en premier. De cette façon, vous savez que le réseau n'est pas à blâmer. –
J'ai essayé le ping et cela a fonctionné. – Anton