Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème WinSock... [ Archives / Au secours ] (Vermifuge)

vendredi 28 avril 2006 à 11:35:50 | Problème WinSock...

Vermifuge

Bonjour tout le monde, j'ai une réaction étrange de WinSock, et comme je trouve pas j'ai pensé que quelqu'un avait déjà eu ce problème ( c'est la première fois dans mon cas ). Voilà, alors j'ai un client et un serveur qui dialogues ensemblent. Le client a une interface graphique, et socket asynchrone avec WSAASyncSelect. Le serveur n'en a pas, donc j'utilise WSAEventSelect. Au niveau de la gestion asynchrone tout à l'air de bien se passer, jusqu'au moment où j'envoi des données depuis le client au serveur. Le serveur les reçois ( aucun soucis ici encore ), puis il répond. Et déjà là, c'est assé étrange. Le client reçois le message de données arrivées, il commence à recevoir ( le serveur fait plusieurs sends, ce sont des paquets clos à chaque fois, envoyé d'un bloc et d'une taille de 8 à 20 octets ) 1 ou 2 paquets ( ça dépend des fois ), des fois même il reçoit la moitié des paquets ( c'est une boucle qui tente de récupérer un maximum de paquets disponibles ). Je lis en 2 fois. D'abord 4 octets qui sont la taille totale du paquet, puis je reçois la suite de paquet ( maintenant que je connais la taille XD ). La boucle se termine, tous les paquets n'ont pas été récupérés. Et alors là, le client continu de recevoir plusieurs messages de données arrives ( lParam = FD_READ ), mais les recv ne lisent pas ( WSAWOULDBLOCK ), donc il n'y pas de données. Etrange.... Le nombre de messages total ne correspond pas au nombre de paquets envoyés. Au bout d'un moment, avec ses 18 ou 20 paquets reçus, il a fini de recevoir les paquets envoyés par le serveur. Et à ce moment là, il reçoit un message de socket fermée ainsi que le serveur de son côté. On dirait que la connection est fermée par le système, ou quelque chose dans le genre, mais je comprend pas pourquoi. Aucun appel à closesocket de chaque côté. La seule chose qui peut faire ça, c'est le multiples appels à recv qui ratent par manque de données ( WSAWOULDBLOCK ). Voilà, j'espère que je suis compréhensible, si vous avez une petite aide, elle sera la bienvenue, parce que là je sais pas comment corriger ce problème... @+ Vermi

vendredi 28 avril 2006 à 11:45:53 | Re : Problème WinSock...

Vermifuge

Réponse acceptée !
Arf, en fait le problème est résolu, c'était une erreur de ma part. J'ai ajouté une WSAResetEvent et ( normalement mon event est valable que pour FD_READ et FD_CLOSE alors j'avais fais "if (FD_READ) else ...", j'ai ajouté : "elseif (FD_READ)" et ça marche tout de suite beacoup mieux. XD @+ Vermi



Cette discussion est classé dans : problème, données, serveur, client, paquets


Répondre à ce message

Sujets en rapport avec ce message

Thread, Client/Serveur VC++.Net et avec WinForms ( pas d'MFC ) [ par lacousine ] Bonjour,j'ai développé un serveur qui accept plusieurs clients avec des sockets. Voici mes problèmes: lorsque je veux mettre fin à mon serveur et qu'i Communication Client/Serveur ! Ou es le problème ? [ par QuakeCoder ] Je recentre fréquemment un problème avec l’utilisation de socket et la communication entre Client/Server.   Prenant un exemple de ma dernière appl Problème de sockets... [ par nightlord666 ] Bonjour ! J'essaie en ce moment de programmer un serveur multithread qui servira(peut-être) à un projet de MMORPG. Le serveur fonctionne normalement, problème serveur client en C [ par lenneth666 ] voilà j'ai fais un serveur et un client. Alors pour envoyer un message du serveur vers le client il n'y a aucun problème par contre l'inverse ne march problème serveur TCP en C [ par lenneth666 ] Bonjour j'ai essayé de faire un client server TCP en C mais mon serveur bloque a l'instruction suivante : client_socket = accept( ma_socket,(struct savoir si le client est pret a recevoir les données [ par ebooserge ] salut a tous,j'ai une petite question sur les sockets orientées connection (TCP)lorsqu'un client se connecte a un serveur, est ce qu'il ya moyen pour client/serveur [ par tanoura ] salutje suis entrain de réaliser un programme de simulation du protocole RIP.il s'agit d'une application client serveur sur la même machine et meme co Socket Protocole HTTP [ par victorcoasne ] Bonjour,J'ai fait un proxy qui intègre un serveur WEB et lorsque que je lui demande de s'interroger, je me rends compte qu'il y a une erreur.Cette err client serveur avec envoy successif de fichiers de même extention [ par salawi45 ] bonjour!j'ai parcouru plusieurs forums et à chaque fois on me parle de celui là, donc j'espère trouver ma réponse ici :-)je dévellope une application Meilleur moyen pour chat multi client. [ par deck_bsd ] Yop à tous,Voila , je suis en train de dévelloper un chat multi client pour le réseaux chez moi. Mais voila , en codant le serveur , je me trouve à un


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.