begin process at 2012 05 27 14:20:26
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseaux & Internet

 > CHAT CLIENT/SERVEUR

CHAT CLIENT/SERVEUR


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseaux & Internet Niveau :Débutant Date de création :07/09/2004 Date de mise à jour :07/09/2004 02:33:31 Vu :6 706

Auteur : shown

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

 Description

Ce code permet une discussion entre la personne possédant le serveur et celle possédant le client.

Source

  • //------------------------------partie serveur
  • #include <stdio.h>
  • #include <winsock2.h>
  • #pragma comment(lib, "ws2_32.lib")
  • #include <string.h>
  • int main()
  • {
  • char buffer[255];
  • WSADATA WSAData;
  • WSAStartup(MAKEWORD(2,0), &WSAData);
  • SOCKET sock;
  • SOCKET csock;
  • SOCKADDR_IN sin;
  • SOCKADDR_IN csin;
  • sock = socket(AF_INET, SOCK_STREAM, 0);
  • sin.sin_addr.s_addr = INADDR_ANY;
  • sin.sin_family = AF_INET;
  • sin.sin_port = htons(4444);
  • bind(sock, (SOCKADDR *)&sin, sizeof(sin));
  • listen(sock, 0);
  • int sinsize = sizeof(csin);
  • if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
  • {
  • memset(buffer,0,255);
  • wsprintf(buffer,"Serveur connecte :-) tu peux parler\n");
  • send(csock,buffer,255,0);
  • }
  • while(1)
  • {
  • {
  • memset(buffer, '\0', sizeof(buffer));
  • recv(csock, buffer, sizeof(buffer), 0);
  • Beep(400,150);
  • printf("%s\n",buffer);
  • }
  • {
  • char chaine[1000];
  • fflush(stdout);
  • printf("shown dit :");
  • if (read(0, chaine, 1000)) {
  • sprintf (buffer, "shown dit :%s\n", chaine);
  • send (csock, buffer, strlen (buffer), 0);}
  • }
  • }
  • }
  • //------------------------------partie client
  • #include <stdio.h> // printf
  • #include <conio.h> // getch()
  • #include <winsock2.h>
  • #pragma comment(lib, "ws2_32.lib")
  • #include <string.h>
  • int main()
  • {
  • WSADATA WSAData;
  • WSAStartup(MAKEWORD(2,0), &WSAData);
  • SOCKET sock;
  • SOCKADDR_IN sin;
  • char buffer[255];
  • char *ptr;
  • char msg[256];
  • sock = socket(AF_INET, SOCK_STREAM, 0);
  • /*remplacer l'ip par celle de la machine possédant le serveur*/
  • sin.sin_addr.s_addr = inet_addr("127.0.0.1");
  • /*--------------------------------------------------------------------------*/
  • sin.sin_family = AF_INET;
  • sin.sin_port = htons(4444);
  • connect(sock, (SOCKADDR *)&sin, sizeof(sin));
  • while(1)
  • {
  • {
  • memset(buffer, '\0', sizeof(buffer));
  • recv(sock, buffer, sizeof(buffer), 0);
  • Beep(400,150);
  • printf("%s\n",buffer);
  • }
  • {
  • char chaine[1000];
  • fflush(stdout);
  • printf("Odji dit :");
  • if (read(0, chaine, 1000)) {
  • sprintf (buffer, "Odji dit :%s\n", chaine);
  • send (sock, buffer, strlen (buffer), 0);}
  • }
  • }
  • }
//------------------------------partie serveur

#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
#include <string.h>

int main()
{
	char buffer[255];
	
	WSADATA WSAData;
	WSAStartup(MAKEWORD(2,0), &WSAData);

	SOCKET sock;
	SOCKET csock;
	SOCKADDR_IN sin;
	SOCKADDR_IN csin;

	sock = socket(AF_INET, SOCK_STREAM, 0);

	sin.sin_addr.s_addr = INADDR_ANY;
	sin.sin_family	    = AF_INET;
	sin.sin_port	    = htons(4444);

	bind(sock, (SOCKADDR *)&sin, sizeof(sin));
	listen(sock, 0);


		
		int sinsize = sizeof(csin);
		if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
		{
      	 		 memset(buffer,0,255);
		         wsprintf(buffer,"Serveur connecte :-) tu peux parler\n");
		         send(csock,buffer,255,0);
		}
		
		while(1)
	{
	
          {
               memset(buffer, '\0', sizeof(buffer));
               recv(csock, buffer, sizeof(buffer), 0);
		       Beep(400,150);
   			   printf("%s\n",buffer);
          }
          
          {   	
 	           char chaine[1000];
 	           fflush(stdout);
 	           printf("shown dit :");
 	           if (read(0, chaine, 1000)) {
 	           sprintf (buffer, "shown dit :%s\n", chaine);
 	           send (csock, buffer, strlen (buffer), 0);}
          }
		
    	  		
		
	}
}





//------------------------------partie client

#include <stdio.h>    // printf
#include <conio.h>    // getch()
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
#include <string.h>

int main()
{
	WSADATA WSAData;
	WSAStartup(MAKEWORD(2,0), &WSAData);

	SOCKET sock;
	SOCKADDR_IN sin;
	char buffer[255];
	char *ptr;
	char msg[256];


	sock = socket(AF_INET, SOCK_STREAM, 0);

/*remplacer l'ip par celle de la machine possédant le serveur*/
	sin.sin_addr.s_addr = inet_addr("127.0.0.1");
/*--------------------------------------------------------------------------*/
 
	sin.sin_family	    = AF_INET;
	sin.sin_port	    = htons(4444);

	connect(sock, (SOCKADDR *)&sin, sizeof(sin));
   	   	
   	
   	while(1)
	{
	
    {
    memset(buffer, '\0', sizeof(buffer));
	recv(sock, buffer, sizeof(buffer), 0);
	Beep(400,150);
   	printf("%s\n",buffer);
    }
   
    
    {   	
 	char chaine[1000];
    fflush(stdout);
    printf("Odji dit :");
    if (read(0, chaine, 1000)) {
    sprintf (buffer, "Odji dit :%s\n", chaine);
	send (sock, buffer, strlen (buffer), 0);}
	}
	
	
	
		    
    }
	
   	
}

 Conclusion

Ce code fonctionne avec Dev-C++ malgré des imperfections en particulier
du coté serveur lors de la reception.
Donc si vous savez comment y remédier faites-le moi savoir ;-)

Ne soyez pas trop méchant je débute en C (à peine 3 petits mois...)


 Historique

07 septembre 2004 02:33:31 :
changement de catégorie

 Sources du même auteur

BOT POUR L'IRC
SCANNER DE PORT EN C

 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 MetalDwarf le 08/09/2004 19:46:31

Il manque BEAUCOUPO de choses pour en faire un vrai serveur de chat, mais c est surtout le fait que ton appli ne soit pas multi-clients qui est une enorme limitation.
Il y a plusieures methodes pour le faire, tu devrais essayer de voir ca (les threads par ex puisque tu es sous windows, ou select())...

Commentaire de coucou747 le 12/09/2004 10:10:33 administrateur CS

si c'est pas en mode graphique, alros ça vallait pas le coup de mettre un client et un serveur, suffisait de faire un telnet sur le serveur...

Bon, moi je vennait ici pour apprendre comment utiliser select, je passe mon chemin...

Commentaire de binouche22 le 13/01/2005 20:37:29

pourquoi il arrive pas a faire l'edition de lien??:

undefined reference to `WSAStartup@8'
undefined reference to `socket@12'
undefined reference to `inet_addr@4'
undefined reference to `htons@4'
undefined reference to `connect@12'
undefined reference to `recv@16'
undefined reference to `send@16'

Commentaire de darkkinj le 17/01/2005 23:07:55

Comment fait-on pour porter l'application sur une autre machine. J'aurai voulu tester le soft sur une autre machine qui ne dispose pas de compilateur et le soucis doit venir de la. Quelles modifications as-t-on à fazire pour pouvoir donc utiliser un programme qui fonctionne avec des socket mais qui n'a pas de compilateur.

Commentaire de Thomas46 le 31/03/2006 17:27:22

Darkkinj ?
Bha tu compiles et c'est tout ça te donne 2 .exe et y'a plus besoin de compilateur O_O

Binouche>Tu utilises Devcpp ?
Tu dois ajouter la lib de devcpp pour les socket dans les options du projet

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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

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