Un t'chat en c/c++

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

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.