Applications client/serveur winsock2 pour tester send() et recv().

Soyez le premier à donner votre avis sur cette source.

Vue 10 303 fois - Téléchargée 1 033 fois

Description

Mettre tstsockS.exe sur un serveur. Il se met en écoute par défaut sur le port 5005. Pour en mettre un autre, ajouter l'option "-pN" où N est le n° de port. Exemple : "tstsockS.exe -p3397".

SI ROUTEUR, PENSER A FAIRE UN PORTFORWRADING SUR LE PORT EN QUESTION.

L'application cliente est "tstsockC.exe". Ses paramètres sont l'adresse IP et éventuellement le port.
Ex1 : "tstsockC 81.69.134.245"
Ex2 : "tstsockC 81.69.134.245 -p3564"
Ex3 : "tstsockC 192.168.0.1"
Pour lancer le test depuis le client, aller dans "Run" -> "Poser question...". Le client envoie une série de questions.
Chaque question demande au serveur de lui renvoyer un buffer de N octets. La 1ere question demande 1 octet, la 2eme 2, etc... la dernière 2999.
En local, ça marche (Ex.3).
Entre 2 Freebox, ça plante sur une demande de 1418 octets. Le send du serveur se fait correctement mais le recv du client reste bloqué jusqu'à retourner un WSAECONNRESET.
Ca plante également, lorsque le serveur envoie 2878 octets. On voit en effet dans la trace du serveur qu'il envoie d'abord 1460 octets (découpage fait de lui-même) et il reste donc... 1418 octets !

Conclusion :


Ces deux projets sont créés à partir d'un projet bcp plus important et le comportement est le même et REPRODUCTIBLE.
Je n'ai pas testé entre 2 sites qui non sont pas pourvus de Freebox.
A suivre...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
9 juillet 2007

Bien, compilé sous VC++.net 2005 avec correction de deux erreurs sur time().
Hormis les quelques remarques déjà citée, RAS. Permet de se mettre sur les rail de la connection TCP/IP Client/Serveur.

Merci pour ces deux applic.
Messages postés
7
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
3 novembre 2014

attendez just un peu, il y aura de nouveau sur cppfrance c promis
Messages postés
706
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
27 janvier 2009
4
as tu essayé avec un autre code de client serveur (il y en a plein sur le site) si tu avais ce probleme?
Messages postés
71
Date d'inscription
mercredi 29 septembre 2004
Statut
Membre
Dernière intervention
19 mars 2008

Vive MSDN ;)
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
Ben j'ai testé en loopback et sur le net et je n'ai pas d'erreur lors du paquet 1418.
Par contre, quelques erreurs:
- il faut appeler WSAStartup une fois au debut du prog (pour chaque thread en fait) et appeler autant de fois WSACleanup
- dans ta boucle de recv, le buffer n'est vide que la premiere fois, il faudrait plutot mettre recv (ServerSock, lpBufCour, 8192 - dimlus, 0) ;
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.