LocalStone
Messages postés514Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention 1 mars 2009
-
20 janv. 2008 à 19:06
Veovis153
Messages postés1Date d'inscriptionsamedi 22 janvier 2005StatutMembreDernière intervention16 février 2008
-
16 févr. 2008 à 01:46
Salut à tous !
J'ai une nouvelle fois besoin de vos connaissance parce que je suis face à un problème que je n'arrive pas à résoudre.
J'ai un projet à rendre pour l'école qui doit respecter la condition suivante : un serveur en C qui lance une application Java lors de chaque nouvelle connection de la part d'un client potentiel.
Le rôle du serveur en C est juste d'attendre des connections, et à chaque nouvelle connection, on fork() et dans le processus fils, on redirige les entrées/sorties standards vers le socket de conversation, et on lance le Java. Le Java a alors accès aux requêtes directement depuis les entrées/sorties standards.
Pour lancer le Java, j'utilise un execl, et pas de soucis. Mais en fait, je n'arrive pas à rediriger les entrées/sorties vers le socket. Et je n'arrive pas à savoir s'il faut d'abord vider le socket avant de pouvoir écrire dedans ...
Bref, si quelqu'un peut m'aider. Je poste ci-dessous les quelques lignes de codes d'où semblent venir le problème ...
La redirection :
int intStandardOutput = -1;
close(STDOUT_FILENO);
intStandardOutput = dup(intConversation);
int intStandardInput = -1;
close(STDIN_FILENO);
intStandardInput = dup(intConversation);
Le lancement de l'application Java :
execl(JAVA_RUNTIME_MACHINE_PATH, "java", strClassName, (const char *)NULL)
L'application Java que j'utilise pour les tests (je sais que l'on est pas sur Javafr, mais peut-être que le soucis vient de ma manière de gérer les e/s standard ...)
import java.io.*;
class Application {
public static void main(String[] arguments) {
System.out.println("Hello world ! ");
}
}