begin process at 2012 05 27 14:00:49
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseaux & Internet

 > BUBSOCKCPP.H: OBJET SOCKET TRÈS SIMPLE D'UTILISATION

BUBSOCKCPP.H: OBJET SOCKET TRÈS SIMPLE D'UTILISATION


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseaux & Internet Niveau :Débutant Date de création :04/06/2003 Date de mise à jour :04/06/2003 11:48:58 Vu / téléchargé :4 186 / 470

Auteur : Bub325

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

 Description

bubsockcpp.h est une adaptation de bubsock.h mais en class ce qui permet grace au principe de l'héritage soit de l'adapter a vos objets déjà créés, soit de l'utiliser comme vous le sentez (par exemple pour récupérer des donnée binaire en surchargeant la fonction CLIENTRECV).

voici l'exemple d'un serveur et d'un client simple:

Source

  • ////////////////////////////////////////////////////////////
  • // CLIENT: Client utilisé avec bubsockcpp.h
  • ////////////////////////////////////////////////////////////
  • #include <stdiostr.h>
  • #include "..\bubsockcpp.h"
  • class SOCKCLIENT : public BUBSOCK
  • {
  • void SOCKREAD(SOCKET,char*);
  • void SOCKCLOSE(SOCKET);
  • };
  • void SOCKCLIENT::SOCKREAD(SOCKET _Client,char* chaine)
  • {
  • printf("Serveur: %s",chaine);
  • }
  • void SOCKCLIENT::SOCKCLOSE(SOCKET _Client)
  • {
  • cout << "Le serveur a ete deconnecte" << endl;
  • exit(0);
  • }
  • SOCKET Client;
  • int main()
  • {
  • SOCKCLIENT bub;
  • if (bub.sockopen(&Client,"127.0.0.1",23) != 0)
  • {
  • cout << "Connexion impossible" << endl;
  • exit(0);
  • }
  • cout << "Vous etes connecte" << endl;
  • while(1)
  • {
  • char chaine[0xFF];
  • int c = 0;
  • do
  • {
  • chaine[c++] = getc(stdin);
  • chaine[c] = '\0';
  • if (!strcmp(chaine,"exit"))
  • {
  • bub.sockclose(Client);
  • exit(0);
  • }
  • } while (chaine[c-1] != '\n');
  • bub.sockwrite(Client,chaine);
  • }
  • return 0;
  • }
  • _______________________________________________________________
  • ////////////////////////////////////////////////////////////
  • // SERVEUR: Serveur utilisé avec bubsockcpp.h
  • ////////////////////////////////////////////////////////////
  • #include <stdiostr.h>
  • #include "..\bubsockcpp.h"
  • SOCKET Client = INVALID_SOCKET;
  • SOCKET Serv;
  • class SOCKSERV : public BUBSOCK
  • {
  • void SOCKLISTEN(SOCKET);
  • void SOCKREAD(SOCKET,char*);
  • void SOCKCLOSE(SOCKET);
  • };
  • void SOCKSERV::SOCKLISTEN(SOCKET _Client)
  • {
  • if (Client == INVALID_SOCKET)
  • {
  • printf("Un client est arrivé\n");
  • Client = _Client;
  • }
  • else sockclose(_Client);
  • }
  • void SOCKSERV::SOCKREAD(SOCKET _Client,char* chaine)
  • {
  • printf("Client: %s",chaine);
  • }
  • void SOCKSERV::SOCKCLOSE(SOCKET _Client)
  • {
  • if (_Client == Client)
  • {
  • printf("Le client s'est deconnecte\n");
  • exit(0);
  • }
  • }
  • int main(int argc, char* argv[])
  • {
  • SOCKSERV serveur;
  • if (serveur.socklisten(&Serv,23) != 0)
  • {
  • printf("Connexion impossible du serveur.\n");
  • exit(0);
  • }
  • printf("Serveur pret\n");
  • while(1)
  • {
  • char chaine[0xFF];
  • int c = 0;
  • do
  • {
  • chaine[c++] = getc(stdin);
  • chaine[c] = '\0';
  • if (!strcmp(chaine,"exit"))
  • {
  • if (Client != INVALID_SOCKET) serveur.sockclose(Client);
  • exit(0);
  • }
  • } while (chaine[c-1] != '\n');
  • if (Client != INVALID_SOCKET) serveur.sockwrite(Client,chaine);
  • }
  • return 0;
  • }
////////////////////////////////////////////////////////////
// CLIENT: Client utilisé avec bubsockcpp.h
////////////////////////////////////////////////////////////

#include <stdiostr.h>
#include "..\bubsockcpp.h"

class SOCKCLIENT : public BUBSOCK
{
	void SOCKREAD(SOCKET,char*);
	void SOCKCLOSE(SOCKET);
};

void SOCKCLIENT::SOCKREAD(SOCKET _Client,char* chaine)
{
	printf("Serveur: %s",chaine);
}

void SOCKCLIENT::SOCKCLOSE(SOCKET _Client)
{
	cout << "Le serveur a ete deconnecte" << endl;
	exit(0);
}


SOCKET Client;

int main()
{
	SOCKCLIENT bub;

	if (bub.sockopen(&Client,"127.0.0.1",23) != 0)
	{
		cout << "Connexion impossible" << endl;
		exit(0);
	}
    cout << "Vous etes connecte" << endl;
    while(1) 
	{
		char chaine[0xFF];
		int c = 0;
		do
		{

			chaine[c++] = getc(stdin);
			chaine[c] = '\0';
			if (!strcmp(chaine,"exit"))
			{
				bub.sockclose(Client);
				exit(0);
			}

		} while (chaine[c-1] != '\n');
		bub.sockwrite(Client,chaine);
    }
    return 0;
}


_______________________________________________________________


////////////////////////////////////////////////////////////
// SERVEUR: Serveur utilisé avec bubsockcpp.h
////////////////////////////////////////////////////////////

#include <stdiostr.h>
#include "..\bubsockcpp.h"

SOCKET Client = INVALID_SOCKET;
SOCKET Serv;

class SOCKSERV : public BUBSOCK
{
	void SOCKLISTEN(SOCKET);
	void SOCKREAD(SOCKET,char*);
	void SOCKCLOSE(SOCKET);
};

void SOCKSERV::SOCKLISTEN(SOCKET _Client)
{
	if (Client == INVALID_SOCKET)
	{
		printf("Un client est arrivé\n");
		Client = _Client;
	}
	else sockclose(_Client);
}

void SOCKSERV::SOCKREAD(SOCKET _Client,char* chaine)
{
	printf("Client: %s",chaine);
}

void SOCKSERV::SOCKCLOSE(SOCKET _Client)
{
	if (_Client == Client)
	{
		printf("Le client s'est deconnecte\n");
		exit(0);
	}
}

int main(int argc, char* argv[])
{
	SOCKSERV serveur;
	if (serveur.socklisten(&Serv,23) != 0)
	{
		printf("Connexion impossible du serveur.\n");
		exit(0);
	}

    printf("Serveur pret\n");
    while(1) 
	{
		char chaine[0xFF];
		int c = 0;
		do
		{
			chaine[c++] = getc(stdin);
			chaine[c] = '\0';
			if (!strcmp(chaine,"exit"))
			{
				if (Client != INVALID_SOCKET) serveur.sockclose(Client);
				exit(0);
			}

		} while (chaine[c-1] != '\n');
		if (Client != INVALID_SOCKET) serveur.sockwrite(Client,chaine);
    }
    return 0;
}

 Conclusion

Laisser suggestions, appréciations et notes svp,
Et j'aiaussi un bug à signaler, je ne peut pas utiliser cout dans les fonctions surchargées sinon l'affichage ne se fait seulement lorsqu'on ferme le socket, alors que ça marche très bien avec printf. Si quelqu'un sait pourquoi, merci de me le dire.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

PARTAGE DE VARIABLE ENTRE PLUSIEUR PROGRAMMES (FILEMAPPING)
Source avec Zip NAVAL_FLEET325 -&GT; COMBAT D'IA
Source avec Zip MORPION325 -&GT; COMBAT D'IA
Source avec Zip BUBSOCK.H: LES SOCKET DEVIENNENT SIMPLES

 Sources de la même categorie

Source avec Zip Source avec une capture MINI SERVEUR HTTP [WINDOWS] par ganjarasta
Source avec Zip Source avec une capture CLIENT DE TEST MODBUS TCP par brunovan
Source avec Zip Source avec une capture SCANIP [ARP / ICMP] par ganjarasta
Source avec Zip Source avec une capture TRACEROUTE [WINPCAP] par ganjarasta
Source avec Zip SERVEUR MULTITHREAD [LINUX/WIN] par nipepsinicolas

Commentaires et avis

Commentaire de Kaid le 04/06/2003 12:01:43

Je ne sais pas comment tu peux appeler les méthodes membres de la classe SOCKSERV car n'ayant pas spécifier de visibilité (public, private, protected) dans la déclaration de ta classe, ces méthodes sont par défaut des méthodes privées.

Commentaire de Bub325 le 04/06/2003 12:19:53

car les fonctions membres sont déclaré public dans la class BUBSOCK dont hérite SOCKSERV. On peut donc les utiliser sans aucun problèmes. Quand au fonctions SOCKLISTEN SOCKREAD et SOCKCLOSE elles sont elles bien privées puisqu'il n'y a aucun appel exterieur.

Commentaire de kobee12 le 30/03/2004 18:06:05

Salut j'ai une erreur quand je lance le serveur.exe.
Ca provient de la methode suivante :

DWORD WINAPI ServListen(LPVOID arg)
{
    return (((INFOSOCK*)arg)-&gt;bubSock)-&gt;SERVLISTEN(*(((INFOSOCK*)arg)-&gt;Client));
}

Si tu sais pourquoi fais moi signe car je peux pas utiliser ta librairie qui est pourtant bien pratique.

Bon voila @ +
kobee12

Commentaire de Bub325 le 02/04/2005 12:29:07

Etrange, mais je vous conseil d'utiliser bubsock.h (version C et non C++) car j'ai pu remarquer de nombreux bug sur bubsockcpp.h

Commentaire de steve6000 le 22/09/2005 06:56:19

---------------------------
Takebotz.exe - Erreur d'application
---------------------------
L'instruction à "0x004017d0" emploie l'adresse mémoire "0x0000000c". La mémoire ne peut pas être "read".


Cliquez sur OK pour terminer le programme.
Cliquez sur Annuler pour déboguer le programme
---------------------------
OK   Annuler  
---------------------------


j'ai carément sa moi

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,562 sec (4)

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