Winsock 2 pour un chat tout simple

Description

Le prog. fonctionne bien entre 2 PC.
(Pas essayé avec plusieurs personnes)

Explication pour lancer le programme :
Lancer « IP_serveur », ensuite le client doit avoir dans le programme votre IP et lancer le programme « IP_client »

Source / Exemple :


// client simple

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

char *bufferRecv = new char[800];
char *bufferSend = new char[800];

int rec;
#define IP   "XXX.XXX.XXX.XXX"
#define PORT 1000

main()
{       
printf("          -=[ Client ]=-\n\n");
		WSADATA WSAData;
		WSAStartup(MAKEWORD(2,0), &WSAData);
	
		SOCKET sock;
		SOCKADDR_IN sin;

		sock = socket(AF_INET, SOCK_STREAM, 0);	

		sin.sin_addr.s_addr	= inet_addr(IP);
		sin.sin_family	= AF_INET;
		sin.sin_port	= htons(PORT);

		connect(sock, (SOCKADDR *)&sin, sizeof(sin));
        
        do
        {	
		scanf ("%s",bufferSend);
		send(sock, bufferSend, strlen(bufferSend), 0);  

 if ((rec = recv (sock, bufferRecv, 64*sizeof(char), 0)) != SOCKET_ERROR)
                {
                 bufferRecv[rec] = '\0';
                 printf("\n%s\n",bufferRecv); 
                }
        }
        while (rec > 0);
}

////////////////////////////////////////////////////////////////////////////////

// serveur simple

#include "winsock2.h"
#pragma comment(lib, "ws2_32.lib")

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <iostream.h>

char *bufferRecv = new char[800];
char *bufferSend = new char[800];

int rec;
#define PORT 1000

main()
{       
printf("          -=[ Serveur ]=-\n\n");
		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(PORT);

		bind(sock, (SOCKADDR *)&sin, sizeof(sin));
		listen(sock, 0);
		int sinsize = sizeof(csin);

	    sock = accept(sock, (SOCKADDR *)&csin, &sinsize);
       
        do
        {       
         scanf ("%s",bufferSend);
         send(sock, bufferSend, strlen(bufferSend), 0);

if ((rec = recv (sock, bufferRecv, 64*sizeof(char), 0)) != SOCKET_ERROR)
                {
                  bufferRecv[rec] = '\0';
                  printf("\n%s\n",bufferRecv); 
                }
        }
        while (rec > 0);

}

Conclusion :


Je remercie NerOcrO, de m'avoir donné quelle explication pour finir ce prog.
Pour recevoir un message, il faut envoyer un message car il n'y a pas de bouton envoi.

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.