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 136 137 138 139
|
/*
Name: ClientMySocket
Email: samyhocine_at_hotmail.fr
Website: samsoft.ift.fr
Copyright: Gpl v2
Author: Samy Hocine
Date: 10/10/07 14:14
Description: Partie client de MySock
Infos: Quand le code sera ok, ajouter de la couleur
*/
#include <stdio.h>
#include <stdlib.h>
#include "io.h"
#ifdef __cplusplus
#error Be sure you are using a C compiler
#endif
#if defined (WIN32)
#include <winsock2.h>
#elif defined (LINUX)
/* Rien pour le moment */
#else
#error not defined for this platform
#endif
#if 0
#define MY_PORT 1025
#else
#define MY_PORT 23
#endif
void fclean(char *s_buffer, FILE *stream);
int main(void)
{
#if defined (WIN32)
WSADATA WSAData;
int error = WSAStartup(MAKEWORD(2,0), &WSAData);
#else
int error = 0;
#endif
fprintf(stdout, "\nClient 1.0\n\n");
if(!error)
{
/* On construit la socket */
SOCKET socketServeur = socket(AF_INET, SOCK_STREAM, 0);
if(socketServeur != INVALID_SOCKET)
{
SOCKADDR_IN sin;
sin.sin_addr.s_addr = inet_addr("127.0.0.1");
sin.sin_family = AF_INET;
sin.sin_port = htons(MY_PORT);
/* Si la connection est re'ussie */
if(connect(socketServeur, (SOCKADDR *)&sin, sizeof(sin)) != SOCKET_ERROR)
{
int sock_err = 0, end = 0;
char serveurMessage[256], myMessage[256] = "Message bien recu";
fprintf(stdout, "Connexion re'ussie avec le serveur sur la socket %d\n\n", socketServeur);
do
{
sock_err = recv(socketServeur, serveurMessage, (int) sizeof serveurMessage - 1, 0);
if(sock_err != SOCKET_ERROR)
{
fprintf(stdout, "\n\nDonne'e recue avec succes\n\n");
fflush(stdout);
if(strcmp(serveurMessage, "STAT_OFF")==0)
{
fprintf(stdout, "Serveur %d : Je suis absent\n", socketServeur);
fflush(stdout);
}
else if(strcmp(serveurMessage, "STAT_ON")==0)
{
fprintf(stdout, "Serveur %d : Je suis revenu\n", socketServeur);
fflush(stdout);
}
else if(strcmp(serveurMessage, "STAT_EXIT")==0)
{
fprintf(stdout, "Serveur %d : Je suis parti\n", socketServeur);
fflush(stdout);
getchar();
end=0;
}
else if(strcmp(serveurMessage, "ACT_IP")==0)
{
/* rien pour le moment */
}
else
{
fprintf(stdout, "Serveur %d : %s\n", socketServeur, serveurMessage);
fflush(stdout);
}
}
else
{
fprintf(stdout, "Erreur lors de la re'ce'ption : ");
fprintf(stdout, "sock_err = %d\n\n", sock_err);
fflush(stdout);
end=0;
}
}
while(end!=0);
int rsltOfShutdown = shutdown(socketServeur, 2);
if(rsltOfShutdown != SUCCESS)
{
fprintf(stdout, "Erreur lors de la fin de connexion\n");
}
else
{
#if defined (WIN32)
closesocket(socketServeur);
#elif defined (LINUX)
close(socketServeur);
#endif
fprintf(stdout, "Fermeture de la connexion avec le client :%d\n", socketServeur);
}
}
else
{
fprintf(stdout, "Echec lors de la connexion avec le serveur\n\n");
system("PAUSE");
}
}
else
{
fprintf(stdout, "\nSocket serveur %d est invalide\n", socketServeur);
fflush(stdout);
}
}
else
{
fprintf(stdout, "\nErreur avec WSADATA\n");
fflush(stdout);
}
#if defined (WIN32)
WSACleanup();
#endif
fprintf(stdout, "Fin du programme");
fflush(stdout);
getchar();
return EXIT_SUCCESS;
} |
Partager