CONNECTION CLIENT SERVEUR AVEC WINSOCK SANS MFC

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 - 6 nov. 2004 à 16:41
 Utilisateur anonyme - 15 oct. 2006 à 23:37
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/27390-connection-client-serveur-avec-winsock-sans-mfc

Utilisateur anonyme
15 oct. 2006 à 23:37
Merci pour cette source "on ne peut plus" commentée ;-)
moumouteb Messages postés 192 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 28 février 2011 10
21 août 2006 à 19:00
Très bonne source pour débuter avec winsock. Mieux que certain long tuto
merci
Spiffou Messages postés 100 Date d'inscription jeudi 1 avril 2004 Statut Membre Dernière intervention 9 juin 2014 1
7 nov. 2004 à 17:55
lol c'est la prochaine étape de mon projet, donc je ne suis pas capable de te répondre pour le moment...

je mettrai une source expliquant tout ca dès que j'aurai moi même compris...
^^
CptLuthor Messages postés 25 Date d'inscription dimanche 7 novembre 2004 Statut Membre Dernière intervention 9 décembre 2004
7 nov. 2004 à 16:22
( jai réussi a créé en C avec les fonctions socket , bind .. un server
et un client, mon pot arrive a ce conecter a moi mais on se voi pas dans les jeu)
CptLuthor Messages postés 25 Date d'inscription dimanche 7 novembre 2004 Statut Membre Dernière intervention 9 décembre 2004
7 nov. 2004 à 16:21
Salut

- je voudrai creer un server et un client VPN en language C ou C++ (
je mi connai un pe en C )
- un .exe qui lance le server et un point .exe qui lance le client , le
client étant le pc dun pot qui habite pas chez moi, on a tous l adsl.
- le server doit pouvoir accepter plusieurs client en meme tps.
- une foi connecter on doit pouvoir se voir en réseau, c a d que par
exemple si je lance un jeu et que je créé un partie réseau local , le
client doit pouvoir joindre la partie créé par le server. ( quand on
utilise le VPN de windows XP ca marche mais le sever XP naccepte que 1
client en meme tps)
- tous ce qui é convivialité, graphic , etc... je men occuperai, dabord je ve juste le truc le + basic. merci a+
Spiffou Messages postés 100 Date d'inscription jeudi 1 avril 2004 Statut Membre Dernière intervention 9 juin 2014 1
7 nov. 2004 à 02:19
ah oui pas mal j'y avait pas pensé, et en plus je l'ai jamais vu dans les sources que j'ai consulté....

j vais essayer de faire la modif demain, par ctre comme tu l'as dit c surtout intéressant quand les chaines sont longues, et dans notre cas y'a peu de chance qu'elles soient coupées.
Mais une fois de plus:
autant prendre les bonnes habotudes deès le début...

merci pour la rque
(c fou ce que ca evolue un soft avec les conseils des autres...)
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
6 nov. 2004 à 19:08
salut,
tu peux meme n'envoyer que strlen(buffer) octets pour le serveur, le 0 de fin de chaine etant un poil inutile.
tu devrais du coup modifier le client car en faisant:
recv(C_socket, buffer, sizeof(buffer),0);
printf("%s\n",buffer);
tu supposes que le serveur t'envoie des données qui finissent par 0 (sinon ca affiche n'importe quoi (enfin ca va afficher des caracteres supplementaires)).
il ne faut en fait jamais faire ce genre de supposition, car par exemple, la chaine envoyée par le serveur peut avoir été coupée en deux (si elle est longue notamment, si le traffic internet est surchargé, etc...; ca dépend de parametres exterieurs au programme et qui peuvent conduire a ca)

je te conseille de faire:

int r = recv(C_socket, buffer, sizeof(buffer) - 1,0);
// c'est bien sizeof(buffer) - 1 !! cela assure que
// r est soit négatif (erreur) soit entre 0 et sizeof(buffer)-1
if (r >= 0)
{
// donc on peut faire ca sans craindre un débordement
// d'indice.
buffer[r] = 0; // on place un 0 a la fin des données recues.
printf("%s\n",buffer);
}
else
{
printf("erreur lors de la reception\n");
// il y a eu une erreur, à traiter...
}

et voila...

a++ ;)
Spiffou Messages postés 100 Date d'inscription jeudi 1 avril 2004 Statut Membre Dernière intervention 9 juin 2014 1
6 nov. 2004 à 18:34
C'est juste merci pour la rque, je corrige le code.
Il faut quand même dire que étant donné la nature du prog, (qui sert uniquement de tuto) le côté optimisation n'est pas primordial, mais autant prendre les bonnes habotudes deès le début...
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
6 nov. 2004 à 16:41
Salut,
Coté serveur, il faut envoyer strlen(buffer)+1 octets, et non pas sizeof(buffer) octets.. il faut envoyer seulement ce qui est utile.
Rejoignez-nous