A voir également:
- Serveur et client en C++ comment communiquer?
- Cybera client - Télécharger - Divers Réseau & Wi-Fi
- Changer serveur dns - Guide
- Serveur entrant et sortant - Guide
- Filezilla client - Télécharger - Téléchargement & Transfert
- Filezilla client ou serveur ✓ - Forum Réseau
8 réponses
Salut.
les socket, c'est un flux, comme la lecture d'un fichier ou l'interaction avec un utilisateur.
les fonctions recv et send permettent de transmettre des information, il faut traiter ces informations comme tu traiterais une entrée utilisateur. Tu ne peux pas appeler directement une fonction, lorsque le serveur reçoit des informations, il faut qu'il regarde ces informations et les traite en conséquence.
J'utilise le terme générique "information", car il est possible de traiter des chaines de caractère, des entier, des float, des structures...
Par exemple, tu veux que le serveur exécute la fonction reload(). Du coté serveur tu fait :
du coté serveur, tu fais :
voilà en gros l'idée.
les socket, c'est un flux, comme la lecture d'un fichier ou l'interaction avec un utilisateur.
les fonctions recv et send permettent de transmettre des information, il faut traiter ces informations comme tu traiterais une entrée utilisateur. Tu ne peux pas appeler directement une fonction, lorsque le serveur reçoit des informations, il faut qu'il regarde ces informations et les traite en conséquence.
J'utilise le terme générique "information", car il est possible de traiter des chaines de caractère, des entier, des float, des structures...
Par exemple, tu veux que le serveur exécute la fonction reload(). Du coté serveur tu fait :
send(sock,"reload\r\n",sizeof("reload\r\n"),0);
du coté serveur, tu fais :
char buf[256]; recv(sockd,buf,255,0); if(!strcmp(buf,"reload")) reload();
voilà en gros l'idée.
Ooooh merci c'est clair :3
Donc je pourrais par exemple utiliser un switch case pour déterminer quelle fonction utiliser? Disons que j'inclue dans les informations un nombre qui sert l'évaluation du case afon de faire exécuter la bonne fonction...?
Donc je pourrais par exemple utiliser un switch case pour déterminer quelle fonction utiliser? Disons que j'inclue dans les informations un nombre qui sert l'évaluation du case afon de faire exécuter la bonne fonction...?
Tu peux faire comme ça en effet.
Pour CORBA, je ne m'y connais pas. Le peu que j'en ai lu, c'est compliqué. Mais si c'est plus propre, ça pourrai être utile dans la suite.
Pour CORBA, je ne m'y connais pas. Le peu que j'en ai lu, c'est compliqué. Mais si c'est plus propre, ça pourrai être utile dans la suite.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Est-ce que je devrais implémenter un système d'ID de requête pour m'assurer que la bonne requête recoive la bonne réponse?
Parce que la manière dont je vais fonctionner, c'est que côté serveur j'ai un parseur qui va parser les requêtes et les diriger vers le bon moteur, qui lui va interroger la base de données, faire les calculs et retourner la réponse au parseur qui la renverra via un socket.
Mon projet est un jeu... donc j'aurai un moteur pour les batailles, un moteur pour les duels, un moteur pour les dommages, etc.
Est-ce qu'il y a un danger qu'une deuxième requête se termine avant une première requête recue et que la réponse à la deuxième requête soit envoyé en tant que réponse à la première requête si les deux requêtes utilisent des moteurs différents?
Merci encore! :3
Parce que la manière dont je vais fonctionner, c'est que côté serveur j'ai un parseur qui va parser les requêtes et les diriger vers le bon moteur, qui lui va interroger la base de données, faire les calculs et retourner la réponse au parseur qui la renverra via un socket.
Mon projet est un jeu... donc j'aurai un moteur pour les batailles, un moteur pour les duels, un moteur pour les dommages, etc.
Est-ce qu'il y a un danger qu'une deuxième requête se termine avant une première requête recue et que la réponse à la deuxième requête soit envoyé en tant que réponse à la première requête si les deux requêtes utilisent des moteurs différents?
Merci encore! :3
Après mure réflexion, oui elle a rapport, puisque je ne prévois par que le parseur reçoive la réponse de la part du moteur, mais plutôt que le moteur envoie directement la réponse via le socket. Il faut donc que le moteur sache où envoyer la réponse et surtout que le client sache que la réponse qu'il vient de recevoir est la réponse à telle ou telle requête qu'il a envoyée...
En fait ce que je me demande... c'est si une requête reçue plus tard peut se terminer avant des requêtes qui ont été reçues avant celles-ci.
En fait ce que je me demande... c'est si une requête reçue plus tard peut se terminer avant des requêtes qui ont été reçues avant celles-ci.
Bordel de site ! il a pas retenue ma première réponse.
Bon, alors, pour répondre à ta question, ça dépend de la manière dont tu codes. Si tu mets les requêtes dans une pile et que tu attends qu'une requête soit fini avant de traiter la suivante, ou si tu fait des thread qui s'exécuteront simultanément pour chaque requête, il y aura les deux comportements.
Après à toi de voir comment gérer ça.
Bon, alors, pour répondre à ta question, ça dépend de la manière dont tu codes. Si tu mets les requêtes dans une pile et que tu attends qu'une requête soit fini avant de traiter la suivante, ou si tu fait des thread qui s'exécuteront simultanément pour chaque requête, il y aura les deux comportements.
Après à toi de voir comment gérer ça.