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 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|