Merci pour cette source "on ne peut plus" commentée ;-)
moumouteb
Messages postés192Date d'inscriptiondimanche 16 janvier 2005StatutMembreDernière intervention28 février 201110 21 août 2006 à 19:00
Très bonne source pour débuter avec winsock. Mieux que certain long tuto
merci
Spiffou
Messages postés100Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention 9 juin 20141 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és25Date d'inscriptiondimanche 7 novembre 2004StatutMembreDerniè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és25Date d'inscriptiondimanche 7 novembre 2004StatutMembreDerniè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és100Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention 9 juin 20141 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és700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 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és100Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention 9 juin 20141 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és1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 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.
15 oct. 2006 à 23:37
21 août 2006 à 19:00
merci
7 nov. 2004 à 17:55
je mettrai une source expliquant tout ca dès que j'aurai moi même compris...
^^
7 nov. 2004 à 16:22
et un client, mon pot arrive a ce conecter a moi mais on se voi pas dans les jeu)
7 nov. 2004 à 16:21
- 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+
7 nov. 2004 à 02:19
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...)
6 nov. 2004 à 19:08
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++ ;)
6 nov. 2004 à 18:34
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...
6 nov. 2004 à 16:41
Coté serveur, il faut envoyer strlen(buffer)+1 octets, et non pas sizeof(buffer) octets.. il faut envoyer seulement ce qui est utile.