1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
| CLIENT
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<winsock2.h>
#pragma comment (lib, "ws2_32.lib")
void Couleur(int);
void main()
{
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock, csock;
SOCKADDR_IN sin;
int tentative; //Nombre de tentative pour se connecter au server
char buffer[50]; //Message à envoyer
bool connection; //Terminer la connection
printf("\n\n\t\t\t\t CLIENT\n");
printf("\t\t\t\t ------\n\n");
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr = inet_addr("127.0.0.1");
sin.sin_family = AF_INET;
sin.sin_port = htons(69);
tentative = 0;
do
{
connection = false;
csock = connect(sock, (SOCKADDR *)&sin, sizeof(sin)); //Connection au server
if(csock != SOCKET_ERROR)
{
printf("\n\n Connexion etablie...");
do
{
recv(sock, buffer, sizeof(buffer), 0); //Reçoit le message duserver
if(strcmp(buffer, "EXIT") != 0) //Le server envoit EXIT pour stopper le tchat
{
Couleur(12);
printf("\n\n Server : ");
Couleur(7);
printf("%s", buffer); //Affiche le message envoyer par le server
printf("\n * Message : ");
fflush(stdin);
gets(buffer);
send(sock, buffer, sizeof(buffer), 0); //Envoit un message au server
}
}while(strcmp(buffer, "EXIT") != 0);
connection = true;
}
else
{
printf("\n\n\a\t\t ERREUR DE CONNECTION AVEC LE SERVER\n\n");
tentative++;
printf(" Appuyer sur une touche pour essayer de vous connecter...");
getch();
}
}while(tentative < 3 && connection == false);
closesocket(sock); //Ferme le socket
WSACleanup(); //Ferme les WSA
printf("\n\n Appuyer sur une touche pour quitter...");
getch();
}
void Couleur(int color)
{
HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hcon, color); }
SERVER
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<winsock2.h>
#pragma comment (lib, "ws2_32.lib")
void Couleur(int);
void main()
{
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock, csock;
SOCKADDR_IN sin, csin;
int csinsize;
char buffer[50];
bool envois = false;
printf("\n\n\t\t\t\t SERVER\n");
printf("\t\t\t\t ------\n\n");
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_family = AF_INET;
sin.sin_port = htons(69);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
listen(sock, 2);
printf(" Attente de connection avec le client...");
csinsize = sizeof(csin);
csock = accept(sock, (SOCKADDR *)&csin, &csinsize);
printf("\n Connexion etablie...\n\n");
if(csock != INVALID_SOCKET) //Si la connection est acceptée
{
do
{
printf("\n * Message : ");
fflush(stdin);
gets(buffer);
send(csock, buffer, sizeof(buffer), 0); //On envoit un message au client
recv(csock, buffer, sizeof(buffer), 0); //On attend une rèponse de la part du client
Couleur(14);
printf("\n\n Client : ");
Couleur(7);
printf("%s", buffer); //Affiche le message envoyé par le client
}while(strcmp(buffer, "EXIT") != 0); //Le client envoit EXIT pour stopper le tchat
}
closesocket(sock); //Ferme le socket
WSACleanup(); //Ferme le WSA
printf("\n Connexion terminee...\n\n");
printf("\n Appuyer sur une touche pour quitter...");
getch();
}
void Couleur(int color)
{
HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hcon, color); }
] |
Partager