[Sockets] Problèmes de réceptions/envois

Résolu
cs_gg_the_boss Messages postés 49 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 18 juin 2007 - 18 juin 2007 à 17:15
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 - 19 juin 2007 à 14:13
Salut à tous !

Donc voila j'essaye d'ajouter la gestion des sockets à mon langage de script. J'ai implementé les fonctions mais ca ne marche qu'a moitié.

Le client peut se connecter au serveur, envoyer un message, mais le serveur ne recoit le message qu'une fois que la socket est close du côté du client.

Le code en Syp Script (mon langage de script):

# server

test: !open_port_socket :syp_server_socket 6969

!listen_port_socket :test

!print !read_port_socket :test
!write_port_socket :test "pong"

!close_port_socket :test

!ask

# client

test: !open_port_socket "127.0.0.1" 6969

!write_port_socket :test "ping"
!print !read_port_socket :test

!close_port_socket :test

!ask

L'implémentation des fonctions concernées en C++:

Voir ici: http://pastebin.fr/50

Je suis sur que c'est une erreur toute bête :/

Merci d'avance pour vos réponses

gg_tk

1 réponse

katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
19 juin 2007 à 14:13
C'est le code qui le veut!
A partir du moment où le serveur fait son script "!read_port_socket :test" on arrive ligne 152 le serveur fait un recv et ajoute le buffer temporaire à sypbuffer ligne 155. Puis la boucle infinie continue! Elle ne stoppe que lorsque recv retourne 0, ligne 154, c'est à dire lorsque le client ferme, ce qui exécute le code de close_port_socket ligne 64 si j'ai bien compris. D'ailleurs le WSACleanup(); qui s'y trouve ne drvrait être invoqué qu'à la fermeture de l' appli.

Conseil: le code de read_port_socket (ligne 127) ne devrait QUE faire un recv, rien d'autre. Pour l'instant on est dans une boucle infinie qui fait un recv et attend que recv retourne -1 ou 0 pour continuer. Pas normal.

Sinon c'est super intéressant de développer un langage de script, bonne prog.

I can break the rules too, goodbye.
3
Rejoignez-nous