begin process at 2012 02 08 10:43:20
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > CLIENT IRC SIMPLE AVEC DEV-CPP

CLIENT IRC SIMPLE AVEC DEV-CPP


 Information sur la source

Note :
Aucune note
Catégorie :API Classé sous :IRC, SOCKET, CLIENT, SIMPLE, DEV-CPP Niveau :Débutant Date de création :27/05/2009 Date de mise à jour :27/05/2009 22:20:59 Vu / téléchargé :3 612 / 204

Auteur : TeniX

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

 Description

Cliquez pour voir la capture en taille normale
Le but de la source est de vous faire une approche de comment utiliser les SOCKETS avec un serveur IRC, peut servir du base à développer , Le PING est gérer simplement.

Source

  • // DEV-CPP 4.9.9.2
  • #include <cstdlib>
  • #include <iostream>
  • // Include pour utiliser les sockets
  • #include <windows.h>
  • #include <winsock2.h> // Metre -lws2_32 option compilateur
  • using namespace std;
  • DWORD WINAPI Thread(LPVOID lpParameter); // Un Thread pour rester en lecture.
  • void Send_Line(SOCKET S,char * Texte); // Petite fonction pour envoyer une chaine de caractère.
  • void Data_Use(char Data); // Fonction pour traiter les données reçus du serveur
  • SOCKET MySocket; //Notre Socket
  • char C; // Caractère buffer
  • //Pour la fonction Data_Use
  • int Ping_Detect=0,v=0,Fin_motd=0;
  • char Pong_Texte[]="PONG :123456789\r\n",Clear_Pong[18];
  • //
  • int main(int argc, char *argv[])
  • {
  • // Un Impératif pour Init Winsock
  • WSADATA WSAData;
  • WSAStartup(MAKEWORD (2,0), &WSAData );
  • //
  • HOSTENT* HostName; //Pour le Nom de domaine
  • char *IpResult; //Adresse Ip au Format 225.255.255.255
  • MySocket = socket(AF_INET,SOCK_STREAM,0); // Init du Socket
  • char Addr_Serv[]="irc.quakenet.org"; // Adresse du Serveur ou on se connecte OU adresse IP devrait marcher aussi.
  • sockaddr_in Sock_in;
  • Sock_in.sin_family = AF_INET; //FAMILLE
  • Sock_in.sin_port = htons(6667); //PORT
  • // On cherche ici L'adresse Ip depuis le Nom de domaine
  • HostName = gethostbyname(Addr_Serv);
  • IpResult = inet_ntoa(*((struct in_addr * )HostName->h_addr));
  • Sock_in.sin_addr.s_addr = inet_addr(IpResult); //IP
  • //Rapelle des Infos du serveurs
  • cout << "Adresse :" << Addr_Serv << endl;
  • cout << "Adresse IP Server :" << IpResult << endl;
  • //Creaction du Lien
  • cout << "Connection...\n" << endl;
  • connect(MySocket, (sockaddr *) &Sock_in, sizeof(sockaddr));
  • //Ici On est connecté.
  • //Envoi d'une requete
  • //Ligne 1
  • Send_Line(MySocket,"NICK SuperNoyes\r\n");
  • //Ligne 2
  • Send_Line(MySocket,"USER SuperBoye Moi@ccpfrance irc.quakenet.org :Hehe\r\n");
  • //Création du Tread de Lecture
  • DWORD threadID;
  • CreateThread(NULL, 0, Thread, NULL, 0, &threadID);
  • //Creation d'une pause
  • int pause;
  • cin >> pause;
  • //On ferme le tout
  • closesocket (MySocket); // Fermeture du socket
  • WSACleanup();
  • system("PAUSE");
  • return EXIT_SUCCESS;
  • }
  • DWORD WINAPI Thread(LPVOID lpParameter)
  • {
  • while (1) {
  • //Lecture du caractère Buffer
  • recv(MySocket, &C,1, 0);
  • Data_Use(C);
  • }
  • }
  • void Send_Line(SOCKET S,char * Texte)
  • {
  • send(S,Texte,strlen(Texte),0);
  • }
  • void Data_Use(char Texte)
  • {
  • cout << Texte; // Affichage du caractére
  • //ICI UNE FONCTION FAITE RAPIDEMENT POUR GERER LES REPONSES AU PING.
  • if (Ping_Detect == 6)
  • {
  • if (Texte != '\r')
  • {
  • Pong_Texte[6+v]=Texte; //Construit la chaine PONG avec les données serveurs
  • v++;
  • }
  • else
  • {
  • cout << "\n" << Pong_Texte << endl; // Affiche la chaîne qu'on envoi forme PONG: ....
  • Send_Line(MySocket,Pong_Texte); // Reponse
  • //RAZ compteur etc..
  • Ping_Detect=0;
  • v=0;
  • strcpy(Pong_Texte,Clear_Pong);
  • }
  • }
  • // Pour detecter les lettres l'une apres l'autre pour PING
  • if (Ping_Detect == 5) Ping_Detect=6;
  • if (Ping_Detect == 4) Ping_Detect=5;
  • if (Ping_Detect == 3 && Texte == 'G') Ping_Detect=4;
  • if (Ping_Detect == 2 && Texte == 'N') Ping_Detect=3;
  • if (Ping_Detect == 1 && Texte == 'I') Ping_Detect=2;
  • if (Texte == 'P') Ping_Detect=1;
  • // Pour detecter les lettres l'une apres l'autre pour MOTD finit
  • if (Fin_motd == 2 && Texte == '6') Fin_motd=3;
  • if (Fin_motd == 1 && Texte == '7') Fin_motd=2;
  • if (Texte == '3') Fin_motd=1;
  • if (Fin_motd == 3)
  • {
  • Send_Line(MySocket,"JOIN #ESSAY_HEHE\n\r"); // On join un channel
  • Fin_motd=0;
  • }
  • }
// DEV-CPP 4.9.9.2 

#include <cstdlib>
#include <iostream>

// Include pour utiliser les sockets

#include <windows.h>
#include <winsock2.h> // Metre -lws2_32 option compilateur 

using namespace std;

DWORD WINAPI Thread(LPVOID lpParameter); // Un Thread pour rester en lecture.
void Send_Line(SOCKET S,char * Texte); // Petite fonction pour envoyer une chaine de caractère.
void Data_Use(char Data); // Fonction pour traiter les données reçus du serveur

SOCKET MySocket; //Notre Socket 
char C; // Caractère buffer

//Pour la fonction Data_Use
int Ping_Detect=0,v=0,Fin_motd=0;
char Pong_Texte[]="PONG :123456789\r\n",Clear_Pong[18];
//

int main(int argc, char *argv[])
{
    // Un Impératif pour Init Winsock
    WSADATA WSAData;
    WSAStartup(MAKEWORD (2,0), &WSAData );
    //

    HOSTENT* HostName; //Pour le Nom de domaine
    char *IpResult;  //Adresse Ip au Format 225.255.255.255

    MySocket = socket(AF_INET,SOCK_STREAM,0); // Init du Socket
  
    char Addr_Serv[]="irc.quakenet.org"; // Adresse du Serveur ou on se connecte OU adresse IP devrait marcher aussi.

    sockaddr_in Sock_in;
    Sock_in.sin_family = AF_INET;   //FAMILLE           
    Sock_in.sin_port = htons(6667); //PORT  
    
    // On cherche ici L'adresse Ip depuis le Nom de domaine
    
    HostName = gethostbyname(Addr_Serv);
    IpResult = inet_ntoa(*((struct in_addr * )HostName->h_addr));
    Sock_in.sin_addr.s_addr = inet_addr(IpResult); //IP
    
    //Rapelle des Infos du serveurs
    
    cout << "Adresse :" << Addr_Serv << endl;
    cout << "Adresse IP Server :" << IpResult << endl;

   //Creaction du Lien 
   
    cout << "Connection...\n" << endl;
    connect(MySocket, (sockaddr *) &Sock_in, sizeof(sockaddr));
    
    //Ici On est connecté.
    
    //Envoi d'une requete
    
    //Ligne 1

     Send_Line(MySocket,"NICK SuperNoyes\r\n");
    
     //Ligne 2
     Send_Line(MySocket,"USER SuperBoye Moi@ccpfrance irc.quakenet.org :Hehe\r\n");

    //Création du Tread de Lecture
    
    DWORD threadID;
    CreateThread(NULL, 0, Thread, NULL, 0, &threadID);
    
    //Creation d'une pause
    
    int pause;
    cin >> pause;
    
    //On ferme le tout
    
    closesocket (MySocket); // Fermeture du socket
    WSACleanup();
    
    system("PAUSE");

    return EXIT_SUCCESS;
}



DWORD WINAPI Thread(LPVOID lpParameter)
{
   while (1) {
         
            //Lecture du caractère  Buffer
            recv(MySocket, &C,1, 0);
            Data_Use(C); 
   }
}

void Send_Line(SOCKET S,char * Texte)
{
     send(S,Texte,strlen(Texte),0);
}

void Data_Use(char Texte)
{

     
     cout << Texte; // Affichage du caractére
     
     //ICI UNE FONCTION FAITE RAPIDEMENT POUR GERER LES REPONSES AU PING.
     
     if (Ping_Detect == 6)
     {
       if (Texte != '\r')
       { 
             Pong_Texte[6+v]=Texte; //Construit la chaine PONG avec les données serveurs           
             v++;        
       }
       else
       {
          cout << "\n" << Pong_Texte << endl; // Affiche la chaîne qu'on envoi forme PONG: ....

          Send_Line(MySocket,Pong_Texte); // Reponse
          
          //RAZ compteur etc..
          Ping_Detect=0;
          v=0;    
          strcpy(Pong_Texte,Clear_Pong);
       }
     }
       
     // Pour detecter les lettres l'une apres l'autre pour PING
     if (Ping_Detect == 5) Ping_Detect=6;
     if (Ping_Detect == 4) Ping_Detect=5;
     if (Ping_Detect == 3 && Texte == 'G') Ping_Detect=4;
     if (Ping_Detect == 2 && Texte == 'N') Ping_Detect=3;
     if (Ping_Detect == 1 && Texte == 'I') Ping_Detect=2;
     if (Texte == 'P') Ping_Detect=1;
     
     // Pour detecter les lettres l'une apres l'autre pour MOTD finit
     if (Fin_motd == 2 && Texte == '6') Fin_motd=3;
     if (Fin_motd == 1 && Texte == '7') Fin_motd=2;
     if (Texte == '3') Fin_motd=1;
     
     if (Fin_motd == 3) 
     {
         Send_Line(MySocket,"JOIN #ESSAY_HEHE\n\r"); // On join un channel
         Fin_motd=0;      
     }
     
      
}

 Conclusion

LIEN DIRECT SI VOUS VOULEZ L'EXECUTABLE
http://pkzm62.free.fr/IRC_Simple.zip

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   IRC_Simple
    • IRC_Simple.devTélécharger ce fichier [Réservé aux membres club]852 octets
    • main.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 147 octets
    • main.oTélécharger ce fichier [Réservé aux membres club]5 005 octets
    • Makefile.winTélécharger ce fichier [Réservé aux membres club]807 octets

Télécharger le zip


 Historique

27 mai 2009 21:46:21 :
Ajout ZIP
27 mai 2009 22:03:47 :
Ajout ZIP
27 mai 2009 22:21:04 :
Ajout lien exécutable.

 Sources du même auteur

Source avec Zip Source avec une capture IRC CLIENT MULTISERVEUR EN MFC (TXIRC)
FONCTIONS POLYNOMES DU SECOND DEGRE

 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture IRC CLIENT MULTISERVEUR EN MFC (TXIRC) par TeniX
Source avec Zip MINICHAT MULTI-CLIENT par wisar
Source avec Zip INTÉGRATION SIMPLE D'UN CLIENT IRC À UNE APPLICATION par PJulot
Source avec Zip Source avec une capture Source .NET (Dotnet) CLIENT IRC BASIQUE par king67
PROXY IRC SIMPLE (WINDOWS/WINSOCK) par _michel

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

C++ Builder: Client irc (a laide!) [ par Psyc0s ] Bon je suis en train de faire un client irc avec C++ builder Mais le socket ne veux pas envoyer les message au serveur:(La connexion au serveur foncti Winsock simple... [ par DeAtHCrAsH ] Comment faire pour que le serveur puisse gerer plusieurs client a la fois ?Dois-je declarer autant de socket qu'il y a de client ?Ou y a t'il un equiv client ftp soux unix [ par eilyn ] salutvoila je voudrais faire un client ftp sous unixdonc pour créer ma socket j'utilise la méthodeSOCKET s;s = socket (AF_INET,SOCK_STREAM,"protocol") Erreur Socket Asynchrone sous Cpp Builder [ par pym815 ] Salut tout le monde,Je programme actuellement graces aux composant Server de Builder et le client doit etre en expert console, je me connecte correcte Evènement sur un socket client [ par darsh99 ] J'aimerais savoir si la méthode utilisée par BlackGoddess pour son serveur (http://www.cppfrance.com/article.aspx?ID=1287) est récupérable pour gérer Thread et socket besoin de conseil [ par kawito ] Salut,je desire realiser un client/serveur TCPle probleme est que les fonctions accept et recv sont bloquante.donc cela bloque l'affichage etc...mon p CDialog + Sockey ? [ par mickeydisn ] je suis entrin de realiser une application un a serveur Socket en Consol . L'application console pas de PB . Le clien j'ai cree une forme avec un edit client & server [ par Stormy ] J'ai codé un serveur simple usant de TCP. Comme client j'utilise NetCat. Or, quand NetCat 'ferme', mon serveur ne détecte pas la clôture de la relatio programmation socket sous linux [ par blazman34 ] Bonjour à tous !!Voici mon probleme :Je suis en train de programmer une application client serveur sous linux, tout a bien marcher juska présent juska Qd un Socket reçoit une trame erronée ... [ par valoue ] Bonjour,Je suis en train de développer una appli client serveur sous VC++, j'utilise des SOCKET.Le client et le serveur communiquent en s'envoyant des


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

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

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