begin process at 2010 02 10 08:49:53
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseaux & Internet

 > EXEMPLE DE CONNEXION CLIENT-SERVEUR TCP

EXEMPLE DE CONNEXION CLIENT-SERVEUR TCP


 Information sur la source

Note :
7,75 / 10 - par 4 personnes
7,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseaux & Internet Niveau :Initié Date de création :22/07/2004 Date de mise à jour :22/07/2004 20:13:54 Vu / téléchargé :12 976 / 1 308

Auteur : _sebf

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Voici un code documenté afin de donner un exemple simple d'utilisation des socket via Tcp. Que cela soit en mode client ou serveur.

Le code, l'exe et surtout la documentation se trouvent à l'adresse suivante :

http://www.frameip.com/c_mode_connecte/

_SebF

http://www.frameip.com
Un site pour les spécialistes IP

Source

  • Code client :
  • ----------------
  • // ********************************************
  • // Nom du code : envoi_tcp.cpp
  • // Auteur : _SebF AT frameIP.com
  • // date de création : 10 juin 2004
  • // version : 1.0
  • // Licence : Ce code est libre de toute utilisation.
  • // La seule condition existante est de faire référence au site http://www.frameip.com afin de respecter le travail d'autrui.
  • // ********************************************
  • // ********************************************************
  • // Les includes
  • // ********************************************************
  • #include <winsock2.h> // pour les fonctions socket
  • #include <cstdio> // Pour les Sprintf
  • // ********************************************************
  • // Les librairies
  • // ********************************************************
  • #pragma comment(lib,"ws2_32.lib")
  • // ********************************************************
  • // Définition des variables
  • // ********************************************************
  • WSADATA initialisation_win32; // Variable permettant de récupérer la structure d'information sur l'initialisation
  • int erreur; // Variable permettant de récupérer la valeur de retour des fonctions utilisées
  • int tempo; // Variable temporaire de type int
  • int nombre_de_caractere; // Indique le nombre de caractères qui a été reçu ou envoyé
  • char buffer[65535]; // Tampon contennant les données reçues ou envoyées
  • SOCKET id_de_la_socket; // Identifiant de la socket
  • SOCKADDR_IN information_sur_la_destination; // Déclaration de la structure des informations lié au serveur
  • int main (int argc, char* argv[])
  • {
  • printf("\nBonjour, vous etes du cote client. www.frameip.com\n");
  • // ********************************************************
  • // Initialisation de Winsock
  • // ********************************************************
  • erreur=WSAStartup(MAKEWORD(2,2),&initialisation_win32);
  • if (erreur!=0)
  • printf("\nDesole, je ne peux pas initialiser Winsock du a l'erreur : %d %d",erreur,WSAGetLastError());
  • else
  • printf("\nWSAStartup : OK");
  • // ********************************************************
  • // Ouverture d'une Socket
  • // ********************************************************
  • id_de_la_socket=socket(AF_INET,SOCK_STREAM,0);
  • if (id_de_la_socket==INVALID_SOCKET)
  • printf("\nDesole, je ne peux pas creer la socket du a l'erreur : %d",WSAGetLastError());
  • else
  • printf("\nsocket : OK");
  • // ********************************************************
  • // Activation de l'option permettant d'activer l'algorithme de Nagle
  • // ********************************************************
  • tempo=1;
  • erreur=setsockopt(id_de_la_socket,IPPROTO_TCP,TCP_NODELAY,(char *)&tempo,sizeof(tempo));
  • if (erreur!=0)
  • printf("\nDesole, je ne peux pas configurer cette options du à l'erreur : %d %d",erreur,WSAGetLastError());
  • else
  • printf("\nsetsockopt : OK");
  • // ********************************************************
  • // Etablissement de l'ouverture de session
  • // ********************************************************
  • information_sur_la_destination.sin_family=AF_INET;
  • information_sur_la_destination.sin_addr.s_addr=inet_addr("10.10.10.10"); // Indiquez l'adresse IP de votre serveur
  • information_sur_la_destination.sin_port=htons(33333); // Port écouté du serveur (33333)
  • erreur=connect(id_de_la_socket,(struct sockaddr*)&information_sur_la_destination,sizeof(information_sur_la_destination));
  • if (erreur!=0)
  • printf("\nDesole, je n'ai pas pu ouvrir la session TCP : %d %d",erreur,WSAGetLastError());
  • else
  • printf("\nsetsockopt : OK");
  • // ********************************************************
  • // Envoi des données
  • // ********************************************************
  • strcpy(buffer,"Coucou, je suis les donnees. www.frameip.com"); // Copie la chaine de caractère dans buffer
  • nombre_de_caractere=send(id_de_la_socket,buffer,strlen(buffer),0);
  • if (nombre_de_caractere==SOCKET_ERROR)
  • printf("\nDesole, je n'ai pas envoyer les donnees du a l'erreur : %d",WSAGetLastError());
  • else
  • printf("\nsend : OK");
  • // ********************************************************
  • // Fermeture de la session TCP Correspondant à la commande connect()
  • // ********************************************************
  • erreur=shutdown(id_de_la_socket,2); // 2 signifie socket d'émission et d'écoute
  • if (erreur!=0)
  • printf("\nDesole, je ne peux pas fermer la session TCP du a l'erreur : %d %d",erreur,WSAGetLastError());
  • else
  • printf("\nshutdown : OK");
  • // ********************************************************
  • // Fermeture de la socket correspondant à la commande socket()
  • // ********************************************************
  • erreur=closesocket(id_de_la_socket);
  • if (erreur!=0)
  • printf("\nDesole, je ne peux pas liberer la socket du a l'erreur : %d %d",erreur,WSAGetLastError());
  • else
  • printf("\nclosesocket : OK");
  • // ********************************************************
  • // Quitte proprement le winsock ouvert avec la commande WSAStartup
  • // ********************************************************
  • erreur=WSACleanup(); // A appeler autant de fois qu'il a été ouvert.
  • if (erreur!=0)
  • printf("\nDesole, je ne peux pas liberer winsock du a l'erreur : %d %d",erreur,WSAGetLastError());
  • else
  • printf("\nWSACleanup : OK");
  • }
  • Code serveur :
  • ------------------
  • // ********************************************
  • // Nom du code : ecoute_tcp.cpp
  • // Auteur : _SebF AT frameIP.com
  • // date de création : 10 juin 2004
  • // version : 1.0
  • // Licence : Ce code est libre de toute utilisation.
  • // La seule condition existante est de faire référence au site http://www.frameip.com afin de respecter le travail d'autrui.
  • // ********************************************
  • // ********************************************************
  • // Les includes
  • // ********************************************************
  • #include <winsock2.h> // pour les fonctions socket
  • #include <cstdio> // Pour les Sprintf
  • // ********************************************************
  • // Les librairies
  • // ********************************************************
  • #pragma comment(lib,"ws2_32.lib")
  • // ********************************************************
  • // Définition des variables
  • // ********************************************************
  • WSADATA initialisation_win32; // Variable permettant de récupérer la structure d'information sur l'initialisation
  • int erreur; // Variable permettant de récupérer la valeur de retour des fonctions utilisées
  • int tempo; // Variable temporaire de type int
  • int nombre_de_caractere; // Indique le nombre de caractères qui a été reçu ou envoyé
  • char buffer[65535]; // Tampon contenant les données reçues ou envoyées
  • SOCKET id_de_la_socket; // Identifiant de la socket
  • SOCKET id_de_la_nouvelle_socket; // Identifiant de la nouvelle socket
  • SOCKADDR_IN information_sur_la_source; // Déclaration de la structure des informations lié à l'écoute
  • int main (int argc, char* argv[])
  • {
  • printf("\nBonjour, vous etes du cote serveur. www.frameip.com\n");
  • // ********************************************************
  • // Initialisation de Winsock
  • // ********************************************************
  • erreur=WSAStartup(MAKEWORD(2,2),&initialisation_win32);
  • if (erreur!=0)
  • printf("\nDesole, je ne peux pas initialiser Winsock du a l'erreur : %d %d",erreur,WSAGetLastError());
  • else
  • printf("\nWSAStartup : OK");
  • // ********************************************************
  • // Ouverture d'une Socket
  • // ********************************************************
  • id_de_la_socket=socket(AF_INET,SOCK_STREAM,0);
  • if (id_de_la_socket==INVALID_SOCKET)
  • printf("\nDesole, je ne peux pas creer la socket du a l'erreur : %d",WSAGetLastError());
  • else
  • printf("\nsocket : OK");
  • // ********************************************************
  • // Activation de l'option permettant d'activer l'algorithme de Nagle
  • // ********************************************************
  • tempo=1;
  • erreur=setsockopt(id_de_la_socket,IPPROTO_TCP,TCP_NODELAY,(char *)&tempo,sizeof(tempo));
  • if (erreur!=0)
  • printf("\nDesole, je ne peux pas configurer cette options du à l'erreur : %d %d",erreur,WSAGetLastError());
  • else
  • printf("\nsetsockopt : OK");
  • // ********************************************************
  • // Lie la socket à une ip et un port d'écoute
  • // ********************************************************
  • information_sur_la_source.sin_family=AF_INET;
  • information_sur_la_source.sin_addr.s_addr=INADDR_ANY; // Ecoute sur toutes les IP locales
  • information_sur_la_source.sin_port=htons(33333); // Ecoute sur le port 33333
  • erreur=bind(id_de_la_socket,(struct sockaddr*)&information_sur_la_source,sizeof(information_sur_la_source));
  • if (erreur!=0)
  • printf("\nDesole, je ne peux pas ecouter ce port : %d %d",erreur,WSAGetLastError());
  • else
  • printf("\nbind : OK");
  • // ********************************************************
  • // Attente d'ouverture de session
  • // ********************************************************
  • erreur=99; // Initiation de erreur pour être sur que l'on va rentrer dans la boucle
  • while(erreur!=0) // Boucle tant qu'une demande de session (SYN) tcp n'a pas été reçu
  • erreur=listen(id_de_la_socket,1);
  • printf("\nlisten : OK");
  • // ********************************************************
  • // Acceptation de la demande d'ouverture de session
  • // ********************************************************
  • printf("\nAttente de la reception de demande d'ouverture de session tcp (SYN)");
  • tempo=sizeof(information_sur_la_source); // Passe par une variable afin d'utiliser un pointeur
  • id_de_la_nouvelle_socket=accept(id_de_la_socket,(struct sockaddr*)&information_sur_la_source,&tempo);
  • if(id_de_la_nouvelle_socket==INVALID_SOCKET)
  • printf("\nDesole, je ne peux pas accepter la session TCP du a l'erreur : %d",WSAGetLastError());
  • else
  • printf("\naccept : OK");
  • // ********************************************************
  • // Reception des données
  • // ********************************************************
  • nombre_de_caractere=recv(id_de_la_nouvelle_socket,buffer,1515,0);
  • if (nombre_de_caractere==SOCKET_ERROR)
  • printf("\nDesole, je n'ai pas recu de donnee");
  • else
  • {
  • buffer[nombre_de_caractere]=0; // Permet de fermer le tableau après le contenu des data, car la fonction recv ne le fait pas
  • printf("\nVoici les donnees : %s",buffer);
  • }
  • // ********************************************************
  • // Fermeture de la session TCP Correspondant à la commande connect()
  • // ********************************************************
  • erreur=shutdown(id_de_la_nouvelle_socket,2); // 2 signifie socket d'émission et d'écoute
  • if (erreur!=0)
  • printf("\nDesole, je ne peux pas fermer la session TCP du a l'erreur : %d %d",erreur,WSAGetLastError());
  • else
  • printf("\nshutdown : OK");
  • // ********************************************************
  • // Fermeture des deux socket correspondant à la commande socket() et accept()
  • // ********************************************************
  • erreur=closesocket(id_de_la_nouvelle_socket);
  • if (erreur!=0)
  • printf("\nDesole, je ne peux pas liberer la socket du a l'erreur : %d %d",erreur,WSAGetLastError());
  • else
  • printf("\nclosesocket : OK");
  • erreur=closesocket(id_de_la_socket);
  • if (erreur!=0)
  • printf("\nDesole, je ne peux pas liberer la socket du a l'erreur : %d %d",erreur,WSAGetLastError());
  • else
  • printf("\nclosesocket : OK");
  • // ********************************************************
  • // Quitte proprement le winsock ouvert avec la commande WSAStartup
  • // ********************************************************
  • erreur=WSACleanup(); // A appeler autant de fois qu'il a été ouvert.
  • if (erreur!=0)
  • printf("\nDesole, je ne peux pas liberer winsock du a l'erreur : %d %d",erreur,WSAGetLastError());
  • else
  • printf("\nWSACleanup : OK");
  • }
Code client :
----------------

// ********************************************
// Nom du code : envoi_tcp.cpp
// Auteur : _SebF AT frameIP.com
// date de création : 10 juin 2004
// version : 1.0
// Licence : Ce code est libre de toute utilisation.
// La seule condition existante est de faire référence au site http://www.frameip.com afin de respecter le travail d'autrui.
// ********************************************

// ********************************************************
// Les includes
// ********************************************************
#include <winsock2.h> // pour les fonctions socket
#include <cstdio> // Pour les Sprintf

// ********************************************************
// Les librairies
// ********************************************************
#pragma comment(lib,"ws2_32.lib")

// ********************************************************
// Définition des variables
// ********************************************************

WSADATA initialisation_win32; // Variable permettant de récupérer la structure d'information sur l'initialisation
int erreur; // Variable permettant de récupérer la valeur de retour des fonctions utilisées
int tempo; // Variable temporaire de type int
int nombre_de_caractere; // Indique le nombre de caractères qui a été reçu ou envoyé
char buffer[65535]; // Tampon contennant les données reçues ou envoyées
SOCKET id_de_la_socket; // Identifiant de la socket
SOCKADDR_IN information_sur_la_destination; // Déclaration de la structure des informations lié au serveur

int main (int argc, char* argv[])
	{
	printf("\nBonjour, vous etes du cote client. www.frameip.com\n");

	// ********************************************************
	// Initialisation de Winsock
	// ********************************************************
	erreur=WSAStartup(MAKEWORD(2,2),&initialisation_win32);
	if (erreur!=0)
		printf("\nDesole, je ne peux pas initialiser Winsock du a l'erreur : %d %d",erreur,WSAGetLastError());
	else
		printf("\nWSAStartup  : OK");

	// ********************************************************
	// Ouverture d'une Socket
	// ********************************************************
	id_de_la_socket=socket(AF_INET,SOCK_STREAM,0);
	if (id_de_la_socket==INVALID_SOCKET)
		printf("\nDesole, je ne peux pas creer la socket du a l'erreur : %d",WSAGetLastError());
	else
		printf("\nsocket      : OK");

	// ********************************************************
	// Activation de l'option permettant d'activer l'algorithme de Nagle
	// ********************************************************
	tempo=1;
	erreur=setsockopt(id_de_la_socket,IPPROTO_TCP,TCP_NODELAY,(char *)&tempo,sizeof(tempo));
	if (erreur!=0)
		printf("\nDesole, je ne peux pas configurer cette options du à l'erreur : %d %d",erreur,WSAGetLastError());
	else
		printf("\nsetsockopt  : OK");

	// ********************************************************
	// Etablissement de l'ouverture de session
	// ********************************************************
	information_sur_la_destination.sin_family=AF_INET;
	information_sur_la_destination.sin_addr.s_addr=inet_addr("10.10.10.10"); // Indiquez l'adresse IP de votre serveur  
	information_sur_la_destination.sin_port=htons(33333); // Port écouté du serveur (33333)
	erreur=connect(id_de_la_socket,(struct sockaddr*)&information_sur_la_destination,sizeof(information_sur_la_destination));
	if (erreur!=0)
		printf("\nDesole, je n'ai pas pu ouvrir la session TCP : %d %d",erreur,WSAGetLastError());
	else
		printf("\nsetsockopt  : OK");

	// ********************************************************
	// Envoi des données
	// ********************************************************
	strcpy(buffer,"Coucou, je suis les donnees. www.frameip.com"); // Copie la chaine de caractère dans buffer
	nombre_de_caractere=send(id_de_la_socket,buffer,strlen(buffer),0);
	if (nombre_de_caractere==SOCKET_ERROR)
		printf("\nDesole, je n'ai pas envoyer les donnees du a l'erreur : %d",WSAGetLastError());
	else
		printf("\nsend        : OK");

	// ********************************************************
	// Fermeture de la session TCP Correspondant à la commande connect()
	// ********************************************************
	erreur=shutdown(id_de_la_socket,2); // 2 signifie socket d'émission et d'écoute
	if (erreur!=0)
		printf("\nDesole, je ne peux pas fermer la session TCP du a l'erreur : %d %d",erreur,WSAGetLastError());
	else
		printf("\nshutdown    : OK");

	// ********************************************************
	// Fermeture de la socket correspondant à la commande socket()
	// ********************************************************
	erreur=closesocket(id_de_la_socket);
	if (erreur!=0)
		printf("\nDesole, je ne peux pas liberer la socket du a l'erreur : %d %d",erreur,WSAGetLastError());
	else
		printf("\nclosesocket : OK");

	// ********************************************************
	// Quitte proprement le winsock ouvert avec la commande WSAStartup
	// ********************************************************
	erreur=WSACleanup(); // A appeler autant de fois qu'il a été ouvert.
	if (erreur!=0)
		printf("\nDesole, je ne peux pas liberer winsock du a l'erreur : %d %d",erreur,WSAGetLastError());
	else
		printf("\nWSACleanup  : OK");
	}

Code serveur :
------------------

// ********************************************
// Nom du code : ecoute_tcp.cpp
// Auteur : _SebF AT frameIP.com
// date de création : 10 juin 2004
// version : 1.0
// Licence : Ce code est libre de toute utilisation.
// La seule condition existante est de faire référence au site http://www.frameip.com afin de respecter le travail d'autrui.
// ********************************************

// ********************************************************
// Les includes
// ********************************************************
#include <winsock2.h> // pour les fonctions socket
#include <cstdio> // Pour les Sprintf

// ********************************************************
// Les librairies
// ********************************************************
#pragma comment(lib,"ws2_32.lib")

// ********************************************************
// Définition des variables
// ********************************************************
WSADATA initialisation_win32; // Variable permettant de récupérer la structure d'information sur l'initialisation
int erreur; // Variable permettant de récupérer la valeur de retour des fonctions utilisées
int tempo; // Variable temporaire de type int
int nombre_de_caractere; // Indique le nombre de caractères qui a été reçu ou envoyé
char buffer[65535]; // Tampon contenant les données reçues ou envoyées
SOCKET id_de_la_socket; // Identifiant de la socket
SOCKET id_de_la_nouvelle_socket; // Identifiant de la nouvelle socket
SOCKADDR_IN information_sur_la_source; // Déclaration de la structure des informations lié à l'écoute

int main (int argc, char* argv[])
	{
	printf("\nBonjour, vous etes du cote serveur. www.frameip.com\n");

	// ********************************************************
	// Initialisation de Winsock
	// ********************************************************
	erreur=WSAStartup(MAKEWORD(2,2),&initialisation_win32);
	if (erreur!=0)
		printf("\nDesole, je ne peux pas initialiser Winsock du a l'erreur : %d %d",erreur,WSAGetLastError());
	else
		printf("\nWSAStartup  : OK");

	// ********************************************************
	// Ouverture d'une Socket
	// ********************************************************
	id_de_la_socket=socket(AF_INET,SOCK_STREAM,0);
	if (id_de_la_socket==INVALID_SOCKET)
		printf("\nDesole, je ne peux pas creer la socket du a l'erreur : %d",WSAGetLastError());
	else
		printf("\nsocket      : OK");

	// ********************************************************
	// Activation de l'option permettant d'activer l'algorithme de Nagle
	// ********************************************************
	tempo=1;
	erreur=setsockopt(id_de_la_socket,IPPROTO_TCP,TCP_NODELAY,(char *)&tempo,sizeof(tempo));
	if (erreur!=0)
		printf("\nDesole, je ne peux pas configurer cette options du à l'erreur : %d %d",erreur,WSAGetLastError());
	else
		printf("\nsetsockopt  : OK");

	// ********************************************************
	// Lie la socket à une ip et un port d'écoute
	// ********************************************************
	information_sur_la_source.sin_family=AF_INET;
	information_sur_la_source.sin_addr.s_addr=INADDR_ANY; // Ecoute sur toutes les IP locales  
	information_sur_la_source.sin_port=htons(33333); // Ecoute sur le port 33333
	erreur=bind(id_de_la_socket,(struct sockaddr*)&information_sur_la_source,sizeof(information_sur_la_source));
	if (erreur!=0)
		printf("\nDesole, je ne peux pas ecouter ce port : %d %d",erreur,WSAGetLastError());
	else
		printf("\nbind        : OK");

	// ********************************************************
	// Attente d'ouverture de session
	// ********************************************************
	erreur=99; // Initiation de erreur pour être sur que l'on va rentrer dans la boucle
	while(erreur!=0) // Boucle tant qu'une demande de session (SYN) tcp n'a pas été reçu
		erreur=listen(id_de_la_socket,1);
	printf("\nlisten      : OK");

	// ********************************************************
	// Acceptation de la demande d'ouverture de session
	// ********************************************************
	printf("\nAttente de la reception de demande d'ouverture de session tcp (SYN)");
	tempo=sizeof(information_sur_la_source); // Passe par une variable afin d'utiliser un pointeur
	id_de_la_nouvelle_socket=accept(id_de_la_socket,(struct sockaddr*)&information_sur_la_source,&tempo);
	if(id_de_la_nouvelle_socket==INVALID_SOCKET)
		printf("\nDesole, je ne peux pas accepter la session TCP du a l'erreur : %d",WSAGetLastError());
	else
		printf("\naccept      : OK");

	// ********************************************************
	// Reception des données
	// ********************************************************
	nombre_de_caractere=recv(id_de_la_nouvelle_socket,buffer,1515,0);
	if (nombre_de_caractere==SOCKET_ERROR)
		printf("\nDesole, je n'ai pas recu de donnee");
	else
		{
		buffer[nombre_de_caractere]=0; // Permet de fermer le tableau après le contenu des data, car la fonction recv ne le fait pas
		printf("\nVoici les donnees : %s",buffer);
		}

	// ********************************************************
	// Fermeture de la session TCP Correspondant à la commande connect()
	// ********************************************************
	erreur=shutdown(id_de_la_nouvelle_socket,2); // 2 signifie socket d'émission et d'écoute
	if (erreur!=0)
		printf("\nDesole, je ne peux pas fermer la session TCP du a l'erreur : %d %d",erreur,WSAGetLastError());
	else
		printf("\nshutdown    : OK");

	// ********************************************************
	// Fermeture des deux socket correspondant à la commande socket() et accept()
	// ********************************************************
	erreur=closesocket(id_de_la_nouvelle_socket);
	if (erreur!=0)
		printf("\nDesole, je ne peux pas liberer la socket du a l'erreur : %d %d",erreur,WSAGetLastError());
	else
		printf("\nclosesocket : OK");

	erreur=closesocket(id_de_la_socket);
	if (erreur!=0)
		printf("\nDesole, je ne peux pas liberer la socket du a l'erreur : %d %d",erreur,WSAGetLastError());
	else
		printf("\nclosesocket : OK");

	// ********************************************************
	// Quitte proprement le winsock ouvert avec la commande WSAStartup
	// ********************************************************
	erreur=WSACleanup(); // A appeler autant de fois qu'il a été ouvert.
	if (erreur!=0)
		printf("\nDesole, je ne peux pas liberer winsock du a l'erreur : %d %d",erreur,WSAGetLastError());
	else
		printf("\nWSACleanup  : OK");
	}

 Conclusion

Le code, l'exe et surtout la documentation se trouvent à l'adresse suivante :

http://www.frameip.com/c_mode_connecte/

_SebF

http://www.frameip.com
Un site pour les spécialistes IP

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   ecoute_tcp
    • Debug
    • ecoute_tcp.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier6 638 octets
    • ecoute_tcp.ncbTélécharger ce fichier [Réservé aux membres club]60 416 octets
    • ecoute_tcp.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier920 octets
    • ecoute_tcp.suoTélécharger ce fichier [Réservé aux membres club]7 680 octets
    • ecoute_tcp.vcprojTélécharger ce fichier [Réservé aux membres club]2 988 octets
  •   envoi_tcp
    • Debug
    • envoi_tcp.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier5 337 octets
    • envoi_tcp.ncbTélécharger ce fichier [Réservé aux membres club]44 032 octets
    • envoi_tcp.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier918 octets
    • envoi_tcp.suoTélécharger ce fichier [Réservé aux membres club]7 680 octets
    • envoi_tcp.vcprojTélécharger ce fichier [Réservé aux membres club]2 983 octets

Télécharger le zip


 Historique

22 juillet 2004 20:13:54 :
Changement du titre

 Sources du même auteur

Source avec Zip ECHOTCP - REPÈTE LES DATA RECUES SUR UN POR TCP
SCANNEUR DE PORT TCP EN LIGNE DE COMMANDE
Source avec Zip TCPPING - TEMPS DE RÉPONSE VIA TCP
Source avec Zip CISCODOS - TEST LA STABILITÉ CISCO
Source avec Zip FRAMEIP - UN GÉNÉRATEUR DE TRAME - MODE GRAPHIQUE

 Sources de la même categorie

Source avec Zip TIM_RESEAU, CLASSES POUR RESEAU COMPLET par williamallas
Source avec Zip INTERNET IP FINDER TROUVER VOS ADRESSE IP (INTERNET) par xmustapha
Source avec Zip CLIENT/SERVEUR AVEC TSOCKETSERVER & TCLIENTSOCKET par xmustapha
Source avec Zip REMOTE SHELL GEN par ganjarasta
PROXY IRC SIMPLE (WINDOWS/WINSOCK) par _michel

Commentaires et avis

Commentaire de morgandetoi06 le 19/08/2004 06:20:51

Merci deja pour ton site que je connait depuis quelques temps et grace auquel j ai pu m initier au TCP.
j avait justement repris ce code et l ai un peu amelioré:
Si jamais tu as une erreur sur la creation de la socket ou autre tu passes quand meme à la suite c bizare non ?

Commentaire de _sebf le 19/08/2004 09:04:54

Salut Morgandetoi06,

Tu as raison, il est préférable de centraliser les erreurs dans une fonction et finir par un Exit(0);

Voici un exemple de ce que j'utilise d'habitude :

void sortie_avec_erreur(int error,char data[65535])
{
if (error==1)
printf("\nSorry, I can't initialize WSAStartup");
if (error==2)
printf("\nSorry, I can't initialize Socket");
if (error==3)
printf("\nSorry, I can't initialize SetSockOpt");
if (error==4)
printf("\nSorry, I can't send the frame");
if (error==5)
printf("\nSorry, I can't resolve the hostname %s",data);

printf("\nError code      : %d",error);
printf("\nWSAGetLastError : %d",WSAGetLastError());
printf("\n\n");
exit(0);
}

N'hésite pas publier tes modifications, car mon seul objectif, qui est le même que FrameIP, est de partager gratuitement les informations. :) Alors n'hésite pas.


_SebF

http://www.frameip.com
Un site pour les spécialistes IP

Commentaire de nanoouchkadentei le 02/04/2008 00:20:11

salut a tous svp je voudrai savoir  apres avoir etablie un reseau locale,on creer un projet ou en place le fichier source du client dans le poste 1 et le projet serveurr dans le poste B il ya po derreur de compilation mais rien ne se passe ?????????

Commentaire de nanoouchkadentei le 02/04/2008 00:24:33

PROBLEM pour la compilattion du serveur.cpp affiche erreur could not create makefile aider moi svp

Commentaire de nanoouchkadentei le 02/04/2008 00:35:26

yahooo sa marche la compile il faut pas oublier ^pas d'ajouter dans les options d projet lediteur de liens-lwsock32
-lws2_32 mais me reste la communication entre les deux

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,281 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales