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

Code

 > 

Réseaux & Internet

 > SERVER IRC EN C (PROTOCOLE 'MAISON')

SERVER IRC EN C (PROTOCOLE 'MAISON')


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseaux & Internet Classé sous :irc, poll, cowsay, protocole, serveur Niveau :Initié Date de création :18/03/2006 Vu / téléchargé :6 023 / 602

Auteur : Worst

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

 Description

Ceci est un serveur IRC, mais ne s'appuyant pas sur la vraie RFC de l'IRC.
Ce programme permet en fait de créer plusieurs serveurs, qui pourront créer plusieurs groupes de discussions, où pourront dialoguer plusieurs utilisateurs.

Les notions de droits (opérateur / administrateur, etc) ont été gérées de manière simple, et il est possible de faire des kick / ban, des whois, etc.
Commande qui ne sert à rien : vous pouvez demander à une vache en Ascii-art de prononcer votre message pour vous, avec un "/cowsay" :)

Au niveau interne : un thread par serveur, chaque serveur écoutant les connexions grâce à un "poll".


Le sujet complet du projet peut être trouvé ici :
http://igm.univ-mlv.fr/~duris/RESEAU/JAVA/IR2/pr ojetIR2JavaReseau20052006.html



 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 de la même categorie

Source avec Zip SERVEUR MULTITHREAD [LINUX/WIN] par nipepsinicolas
Source avec Zip Source avec une capture SECURE REMOTE SHELL [WIN32] par ganjarasta
Source avec Zip Source avec une capture SUIVI DE PRODUCTION ONDULEUR PHOTOVOLTAÏQUE SOLARMAX par brunovan
Source avec Zip MINICHAT MULTI-CLIENT par wisar
SOCKET CPP par baptchr55

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture SECURE REMOTE SHELL [WIN32] par ganjarasta
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

Commentaires et avis

Commentaire de max12 le 19/03/2006 04:59:20 administrateur CS

Salut, tu voudrais m'expliquer un peu le concept de "poll" ?

Commentaire de Alain Proviste le 19/03/2006 05:16:17 administrateur CS

franchement personne peut t'en vouloir de pas respecter la rfc. Je pense que la rfc irc est la plus pourfendue, coté client comme coté server :)

Commentaire de Worst le 19/03/2006 12:48:00

Pour le poll, regarde la fonction 'Server_listen()' du fichier 'server.c'. Normalement, il y a pas mal de commentaires.

Le principe utilisé est le suivant :
- on crée un tableau de structures 'pollfd' (poll file descriptor ?), de la taille du nombre maximal de personnes acceptées
- on initialise tous les file descriptors dedans à '-1' (non utilisé)
- lorsqu'un client se connectera, on recherchera une case dont le fd est à -1, et on l'associe au client
- s'il n'y a plus d'élément non utilisé, c'est que le serveur est plein.

Il y a ensuite 2 sortes d'actions à gérer avec le poll :
1) le serveur reçoit une demande de connexion
2) un client envoie des informations au serveur

Il faut dont en théorie 2 'poll', 1 qui écoute uniquement le serveur, et un qui écoute tous les clients pour voir si quelqu'un demande quelque chose.

Pour éviter ça, on colle le file descriptor du serveur au début du tableau. Comme ça, on ne fait plus qu'un seul poll qui écoute le serveur et les clients en même temps.

Du coup, quand on parcourt le tableau pour savoir qui a quelque chose de nouveau à faire, on traite différement la case 0 et les autres. Si c'est la case 0, c'est que le serveur vient de recevoir une demande de connexion. Si c'est une autre case, c'est un client qui veut envoyer un message.

Je crois que c'est à peu près tout. Ah non : pour détecter qu'il y a quelque chose à faire pour un file descriptor donné, il suffit de faire un :
if(polls[i].fd != -1 && polls[i].revents & POLLIN) { ... }

"Est-ce qu'il y a bien un client dans cette case, et est-ce qu'il y a un truc à lire"

Commentaire de max12 le 19/03/2006 17:53:47 administrateur CS

ok merci de cette explication :)

Commentaire de jerome4304 le 01/02/2010 15:10:26

Bonjour,
Comment puis-je faire pour tester ce serveur IRC sur une même machine (ubuntu sur vmware) avec un client IRC "officiel" (xchat pour ne pas le citer)?
Merci par avance,
Jerome

Commentaire de Worst le 01/02/2010 15:39:04

Bonjour, vous aurez du mal à dialoguer avec un "client officiel", puisque le serveur fourni ici ne respecte pas du tout (mais alors pas du tout du tout) la RFC... il a juste été réalisé pour voir comment faire des connexions clients / serveurs, etc.

Pour le tester sur un même machine, il suffit de lancer le serveur dans une console, et de faire un netcat dans une autre...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Protocole RTSP/RTP (client/serveur) [ par SebFalquier ] Bonjour,Je suis actuellement en train de développer un client MRCP. Or, le protocole MRCP fonctionne en s'appuyant sur RTSP/RTP pour tunneler ses PDUs [MFC]-Serveur MAIL [ par donslim ] Bonjour à tous,Voilà,je vous explique mon gros problème. Je dois créer un programme accédant à une boîte mail pour vérifier les mails recu. Le serveur [A SUPPRIMER]j'aimerai me connecter a un serveur irc ensuite enregistrer tous les messages qui y circule en n'importe quel langage de programmation [ par kitamanga ] je veux rester moi mème pour toujours Serveur tracker [ par victorcoasne ] Bonjour,Je voudrais créer un tracker pour Wolfenstein Ennemy Territory.Si vous ne savez pas ce que c'est, je vous le dit : c'est un programme qui va l Probleme de connection a IRC [ par Mamelook ] Bonjour, Sa fait quelque heures que j'essai par tout les moyens de me connecter a un serveur IRC, j'ai esseyer une bonne partie des scripts présent su serveur / client [ par the68 ] Bonjour à tous, Voilà je débute dans la programmation en C; j'ai suivis attentivement un tutoriel sur le C pour avoir les bases, et là je me lance d Client FTP en mode passif [ par anek971 ] Bonjour,je tente de créer un "client FTP" pour l'instant tres simpliste qui permet juste de se connecter à un serveur FTP et de lister le contenu du s creation d'un nouveau protocole [ par izzan1900 ] salut tout le monde j'aimrai bien s'il ya qlq1 qui peut m'aider pour creer un nouveau protocole sous ns l'essentiel qu'il marche merci d'avance Socket sous WxWidget ne marche pas... [ par jul39dole ] Bonjour,Je programme un client réseau avec les sockets de wxWidget. Mais pourquoi ce code ne marche pas ?? (au niveau de sc.Write(..) : il me met une Stocker ConncectionString [ par boninou ] Bonjour à tous,Je travail actuellement sur un projet qui se connecte à SqlServer. J'utilise une connectionString dans toute mes "forms" (je developpe


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

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