Bonjour, j'essaye actuellement de bricoler en Java (je débute) les sockets et la connection inter-programmes, pour le plaisir. Seulement si j'arrive à faire de connecter un serveur et un ou plusieurs clients, je n'arrive pas à faire passer d'informations entre eux.
Je suis donc revenu à un code ultra simplifié côté serveur comme côté client pour voir d'où venait le problème. Ici je me contente donc d'établir la connection puis d'envoyer un caractère o`|u une chaîne de caractères côté client, et de le réceptinoner avec read ou readLine (y compris la version de read qui utilise un tableau de caractères) côté serveur, en attendant réception une fois la connection établie côté serveur. Je me suis ainsi aperçu que c'était la fonction de lecture qui renvoyait une exception sur le serveur, et ce même si le client n'envoyait rien de son côté. Simplement une fois la connectino établie, quand le serveur passe à l'instruction read ou readLine, il sort une exception. Voici mon cide pour observation, je vous serais reconnaissant si vous pouviez m'apporter quelque lumière sur la question.
(Pour info j'ai essayé sur les ports 1800 et 18000, et ce qui est en commentaire dans le code du serveur est la boucle que j'avais prévue à l'origine avant de simplifier encore le code.)
Serveur :
import java.net.*;
import java.io.*;
import java.util.*;
public class serveur
{
public static void main(String args[])
{
try
{
ServerSocket ss = new ServerSocket(1800);
while (true)
{
Socket _s = ss.accept();
System.out.println("Un client se connecte.");
BufferedReader _in = new BufferedReader(new InputStreamReader(_s.getInputStream()));
char[] message = new char[10];
_in.read(message);
/*while ((message = _in.read())!= 100) (A ce moment, message était de type char)
{
System.out.println("un message passe");
System.out.write(message);
} */
}
}
catch (Exception e)
{
System.out.println("Une erreur est survenue.");
}
}
}
Client :
import java.net.*;
import java.io.*;
import java.util.*;
public class client
{
public static void main(String[] argv)
{
BlablaClient client = new BlablaClient();
try
{
Socket _s = new Socket("localhost", 1800);
PrintWriter _out = new PrintWriter (new OutputStreamWriter(_s.getOutputStream()));
System.out.println("un message est envoye");
_out.print("Ceci est un message du client.");
}
catch (Exception e)
{
System.out.println("Une erreur est survenue.");
}
}
}
Nitruk