Accueil > > > CLIENT IRC SIMPLE AVEC DEV-CPP
CLIENT IRC SIMPLE AVEC DEV-CPP
Information sur la source
Description
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
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
Sources de la même categorie
Commentaires et avis
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
|
Derniers Blogs
TECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYSTECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYS par ROMELARD Fabrice
Speakers : Lionel Limozin et Alain Marty La session commence par une découverte de SharePoint à travers la mise en place d'un environnement SharePoint pour la gestion des Sessions animées par BeWise. Le besoin est très ba...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0 par odewit
Je viens de publier la version 3.0 de Perspective pour Silverlight, qui regroupe un portage sous Silverlight 5.0 des fonctionnalités de Perspective 2.0, le framework 3D de haut-niveau introduit récemment et de nouveaux exemples de code. En voici la li...
Cliquez pour lire la suite de l'article par odewit TECHDAYS PARIS 2012 : TOP 10 DES BEST PRACTICES POUR SQL SERVERTECHDAYS PARIS 2012 : TOP 10 DES BEST PRACTICES POUR SQL SERVER par ROMELARD Fabrice
Speaker : Nadia Ben El Kadi Configuration machine La session commence par la toute première question à se poser lors de la mise en place d'environnement SQL Server, la configuration des machines : Type de mac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : KINECT + OFFICE 365 UN BON GESTE POUR VOTRE SITECHDAYS PARIS 2012 : KINECT + OFFICE 365 UN BON GESTE POUR VOTRE SI par ROMELARD Fabrice
Speakers : Fabrice Barbin, Samuel Blanchard, Julien Lo Presti Titre Prometteur et attractif invitant à voir comment lier le composant ludique Kinect dans le cadre d'une structure IT classique, notamment au travers de la plat...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE DU PREMIER JOURTECHDAYS PARIS 2012 : PLEINIèRE DU PREMIER JOUR par ROMELARD Fabrice
KeyNotes du premier jour pour les développeurs. La session est principalement axée sur une des principales directions prise par Microsoft à travers tous ses nouveaux produits : Cloud privé ou public (Solution Azure) ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : C++ RE : C++ par louis14
Cliquez pour lire la suite par louis14 C++ C++ par yesoun1
Cliquez pour lire la suite par yesoun1
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|