J'ai besoin de construire une application qui peut recevoir des données à partir d'un réseau et utiliser ces données pour faire des choses non pertinentes avec.Sockets en Java ...?
Voici un morceau de code pour clarifier ce que je fais.
Du côté du serveur:
static Socket client = null;
static ServerSocket ss = null;
if (ss != null) {
ss.close();
}
ss = new ServerSocket(5513);
isrunning = true;
System.out.println("Waiting for client...");
client = ss.accept();
System.out.println("Client accepted.");
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
Et du côté client:
Socket client = null;
PrintWriter out = null;
try {
client = new Socket("hostname", 5513);
out = new PrintWriter(client.getOutputStream(), true);
}
S'il vous plaît noter que ceci est juste un morceau de code. Il n'y a pas d'erreurs dans le code. Après l'exécution du code côté serveur, il attend correctement que le client se connecte.
Maintenant, voici le problème. Dès que j'essaie de me connecter du côté client, j'obtiens un "erreur de connexion ". Cependant, j'ai trouvé quelque chose sur internet whoch m'a dit d'essayer le telnetting côté client. Par exemple, laissez l'adresse IP côté serveur être 192.168.1.1. Donc, après avoir utilisé cette commande:
telnet 192.168.1.1 5513
J'ai effectivement une connexion avec le serveur. La commande lancera un écran vide, et tout ce que je saisis manuellement dans la ligne de commande sera envoyé au serveur après avoir appuyé sur Entrée (vérifié avec le débogage). Par conséquent, je peux me connecter manuellement au serveur et envoyer des données, mais mon code refuse de se connecter.
Toute personne qui sait ce que je fais mal?
Je ne sais pas exactement pourquoi la vôtre échoue, mais j'ai des sockets fonctionnant facilement en utilisant ces deux tutoriels: http://android-er.blogspot.com/2011/01/implement-simple-socket-server-in. html et http://android-er.blogspot.com/2011/01/simple-communication-using.html – HannahMitt
@HannahMitt, il a oublié une boucle while. Le serveur n'écoute même pas les connexions pendant plus d'une seconde. Une fois que le serveur fait UNE connexion, c'est fini et n'écoutera plus. –
Comme je l'ai dit, ce n'est qu'une partie du code. J'utilise une boucle while, en fait. En outre, la méthode accept() attendra l'établissement d'une connexion pour que je puisse laisser le serveur attendre des heures pour établir la première connexion. Après cela, il bouclera au début pour une autre connexion. –