Un t'chat en c/c++

Soyez le premier à donner votre avis sur cette source.

Vue 10 472 fois - Téléchargée 1 082 fois

Description

Voila, un petit t'chat en C/C++. Il a été compilé sur VC++6.

Il utilise les sockets et la librairie ws2_32.lib

Il reste encore beaucoup de choses à faire. Mon prochain but va être d'accepter les pseudo (genre, on entre un pseudo au début de la convers et go....). Et ensuite, je vais essayer de faire un truc dans ce genre:

[CLIENT1]>>>>>>>>>>>>>[SERVEUR]<<<<<<<<<<<<<[CLIENT2]

voila....

P.S: J'ai essayé de traduire les sources pour qu'elles soit compatible avec dev Cpp...Mais...je sais pas.

Source / Exemple :


Serveur:

#include<stdio.h>	
#include<winsock2.h>
#include<iostream.h>

// la vous devez le transformer en lien vers la lib.
//#pragma comment(lib,"ws2_32.lib")

#define N 1000

void main()
{
	WSADATA wsa;
	WSAStartup(MAKEWORD(2,0),&wsa);

	SOCKET server;
	SOCKET sock;

	SOCKADDR_IN sinserv;	
	SOCKADDR_IN sin;		

	int port;

	printf("Port : ");
	scanf("%i",&port);

	sinserv.sin_family=AF_INET;	
	sinserv.sin_addr.s_addr=INADDR_ANY;
	sinserv.sin_port=htons(port);

	server=socket(AF_INET,SOCK_STREAM,0);
	
	bind(server,(SOCKADDR*)&sinserv,sizeof(sinserv));
	
	listen(server,0);

	char buffer[N];
	int sinsize;
	int err=0;

	while(1)
	{
		sinsize=sizeof(sin);
		if((sock=accept(server,(SOCKADDR*)&sin,&sinsize))!=INVALID_SOCKET)
		{
			while(err>-1)
			{
				memset(buffer,0,sizeof(buffer));
				cin.getline(buffer, N);
				err=send(sock,buffer,sizeof(buffer),0);

				memset(buffer,0,sizeof(buffer));
				recv(sock,buffer,sizeof(buffer),0);
				printf("%s\n",buffer);
			}
		}
	}

}

----------------------------------------------------------------------------------------------

Client:

#include<stdio.h>	
#include<winsock2.h>
#include <iostream.h>

// la vous devez le transformer en lien vers la lib.
//#pragma comment(lib,"ws2_32.lib")

#define N 1000

void main()
{
	printf("\t\t\t\tBienvenue sur \"T\'Chat\".\n\n");

	WSADATA wsa; 
	WSAStartup(MAKEWORD(2,0),&wsa);	

	SOCKET sock;	
	SOCKADDR_IN sin;

	printf("Ip : ");

	char ip[15];	
	scanf("%s",ip);	

	printf("%s","\nPort : ");

	int port;	
	scanf("%i",&port);

	sin.sin_family=AF_INET;

	sin.sin_addr.s_addr=inet_addr(ip);
	
	sin.sin_port=htons(port);
	
	sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

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

	if(connect(sock,(SOCKADDR*)&sin,sizeof(sin)))
	{
		printf("La connection a echoue\n");

		system("PAUSE");
		exit(0);
	}

	char buffer[N];
	memset(buffer,0,sizeof(buffer));

	int err=0;

	while(err>-1)
	{
		cin.getline(buffer, N);
		err=send(sock,buffer,sizeof(buffer),0);
		memset(buffer,0,sizeof(buffer));

		err=recv(sock,buffer,sizeof(buffer),0);
		printf("%s\n",buffer);
		memset(buffer,0,sizeof(buffer));
	}

	printf("Connection terminée\n\n");

	WSACleanup();

	system("PAUSE");
}

Conclusion :


Pour le niveau, je sais pas trop quoi mettre...donc...allez, mon premier code en expert. Mais, je vais le changer si vous me dite que ça irai plutot en intermediaire...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Pyroclem
Messages postés
2
Date d'inscription
dimanche 7 octobre 2007
Statut
Membre
Dernière intervention
6 mars 2009
-
//Pour dev cpp:

/* penser a inclure dans les option du projet (editeur de lien)
projet ==> option du projet ==> parametre editeur de lien "../../../Dev-Cpp/lib/libwsock32.a"*/

include //pas de .h
using namespace std; // sinon cin n'est pas reconnu

int main() // main doit etre de type int
{
// ton code
return 0;
}
yoyo269
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3 -
Expert c'est un tout petit peu exagéré là quand même.
Débutant suffira je pense.

YOYO, @+.
zinotron
Messages postés
65
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
11 septembre 2004
-
c'est quoi ca sumpro ?
soumpro
Messages postés
52
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
7 mai 2004
-
Procédure de demarrage !
---------------
Serveur :
port #6000
Client :
IP :120.0.0.1
port : #6000


HUM-HUM-HUM !
#include
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
using namespace std;

void DrawMenu();
void DrawMenu()
{
cout << "\t\t\t\t\t\t\t\t\tBienvenue sur "T\'Chat".\n\n\n\n\n\n";
cout << "\t\t * _____________* \n";
cout << "\t\t * Heliosnet.frchat I Nix200 | * \n";
cout << "\t\t * |Morgandetoi| * \n";
cout << "\t\t * >>>>>>>>>>>>>>>>>>>>>>>>> |Blu>>shED | * \n";
cout << "\t\t * HeliosChatnetprogrammeur |ApXa | * \n";
cout << "\t\t * >>>Channel connection------ |UnixLaNd | * \n";
cout << "\t\t * <<<<<<<Chat helios salon -----|Kirua | * \n";
cout << "\t\t * <<<<<<<<<<<<<<<<<<<<<<<<<<< ^____________Â? *\n";
cout << "\t\t * #Programmeur *\n";
cout << "\t\t * *\n";
cout << "\t\t * *\n";
cout << "\t\t * ________| *\n";
cout << "\t\t * |Infos | *\n";
cout << "\t\t * |-------Â? *\n";
cout << "\t\t * ______________ ___________ *\n";
cout << "\t\t * | Programmeur | | Salons | *\n";
cout << "\t\t |_____________| | __________| *\n";
cout << "\t\t * *\n";
cout << "\t\t *************************************************\n";

}
soumpro
Messages postés
52
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
7 mai 2004
-
C'est vrai qu'il ya souvent des problemes avec les librairies sous Dev-c++ !
Mais pour les sockets , va dans les options d'environnement et change l'adresse de tes bin , tes includes et tes libs !
Utilise le repertoire sous lequel tu as installé les bins,libs et includes de VCC comme repertoires par defaut !
Sinon a part ça , il est bien ton chat !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.