J'aimerais si possible avoir quelques précisions sur le fonctionnement des socket en java sachant que je suis coté serveur.
J'ai ce code de base qui m'étais donné, j'ai pu voir en bidouillant et en faisant des tests à peu près comment il fonctionnait
- Code: Tout sélectionner
ServerSocket socketEcoute;
Socket socketService;
InputStream entreeSocket;
OutputStream sortieSocket;
try {
// création du socket découte (port numéro 7000)
socketEcoute = new ServerSocket(7000);
while (true) {
// attente dune demande de connexion
socketService = socketEcoute.accept();
System.out.println("Nouvelle connexion : " + socketService);
// récupération des flux dentrée/sortie de la socket de service
entreeSocket = socketService.getInputStream();
sortieSocket = socketService.getOutputStream();
try {
int b = 0;
while (b != -1) {
b = entreeSocket.read();
sortieSocket.write(b);
} // while
System.out.println("Fin de connexion");
} // try
catch (IOException ex)
{
// fin de connexion
System.out.println("Fin de connexion : "+ex);
ex.printStackTrace();
}
socketService.close();
} // while (true)
} // try
catch (Exception ex)
{
// erreur de connexion
System.err.println("Une erreur est survenue : "+ex);
ex.printStackTrace();
}
} // main
} // class
Ici, on lit donc sur entrée socket les infos. Un petit test avec mon navigateur m'a bien confirmé que entree socket recevait les requêtes du client. (J'ai casté le b en char pour m'en convaincre pleinement).
Donc, avec ça, je peux lire sur une socket, il n'y a pas de problème, ça veut dire que, modulo quelques bidouillages je suis capable de traiter la requête client.
Par contre, je n'ai pas trouvé comment "répondre" au client, et donc écrire sur la socket.
Je croyais au début que c'était le rôle de sortie socket, mais apparemment ce n'est pas le cas puisque sortie socket écrit sur l'écran.
Du coup, ce qui serait bien que j'arrive à faire ce serait un truc de ce style
- Code: Tout sélectionner
public void responseGet(String filePath, [COLOR=Red]Socket socketPourEcrire[/COLOR]) throws FileNotFoundException{
Scanner scanner=new Scanner(new File(filePath));
// On boucle sur chaque champ detecté
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
[COLOR=Red] /*On enverra ici le fichier demandé par le get du client
en se servant de socketPourEcrire ????[/COLOR]
*****************/
}
scanner.close();
}