juju11288
Messages postés1Date d'inscriptionvendredi 9 novembre 2007StatutMembreDernière intervention24 novembre 2007
-
24 nov. 2007 à 00:07
hamma58
Messages postés2Date d'inscriptiondimanche 18 avril 2010StatutMembreDernière intervention18 septembre 2010
-
9 août 2010 à 15:05
Bonjour a tous je voudrai pour le moment arriver a faire un client serveur en c qui parle entre eux avec le protocole TCP/IP. Je fait les deux programme ,si je lance mon serveur et mon client sur le meme pc sa marche tres bien, donc j'ai tester sur deux pc et la les application ne se connecte pas du tout
voici le code serveur
#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>
#define port 5555
int main(void)
{
char messageRecu[50];
char messageEnvoi[50];
int boucle = 1;
int error;
//initialisation des sockets sous windows
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKADDR_IN sin = {0};
SOCKET sock = socket(AF_INET, SOCK_STREAM, 0); //creation de la socket
if( sock != INVALID_SOCKET )
{
printf("Socket %d est ouvert en TCP/IP .\n",sock);
error = bind(sock, (SOCKADDR *)&sin, sizeof(sin)); //Fusion entre la socket et la configuration
if( error != SOCKET_ERROR )
{
error = listen(sock, 2); //le serveur et mis dans un etat d'ecoute avec sue deux connection
if( error != SOCKET_ERROR )
{
printf("Ecoute du port %d\n" "Attendez un client...\n",port);
SOCKADDR_IN csin = {0};
int sizeofcsin = sizeof(csin);
SOCKET csock = accept(sock, (SOCKADDR *)&csin, &sizeofcsin); //Le serveur accepte la connection du client
if( csock != INVALID_SOCKET )
{
printf(":::::Le Client est connecter\n\n");
while(boucle)
{
error = recv(csock, messageRecu, sizeof(messageRecu)-1, 0); //reception de la chaine
if(error != SOCKET_ERROR)
{
messageRecu[error] = '\0';
printf("CLIEN DIT: %s\n",messageRecu); //on affiche se que le client nous a envoyer
}
else
{
printf(" Socket error, recv !\n"); //Le serveur ne reçoit plus rien donc il quitte
boucle = 0;
}
printf("SERVER DIT: ");
fgets(messageEnvoi, sizeof(messageEnvoi), stdin); //demande se que l'on veut envoyer au client
error = send(csock, messageEnvoi, strlen(messageEnvoi), 0); //Envoi du message
if(error == SOCKET_ERROR)
{
printf(":-/ Socket error, send !\n"); // si il y a eu une erreur
return main();
}
}
}
}
}
}
}
voici le code client
#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h> //Je dois mettre sa pour regarder une valeur dans une variable de type char
#define port 5555
int main(void)
{
char messageEnvoi[50];
char messageRecu[50];
char Arret[50]="OK";
int boucle = 1; //Pour la boucle while
int error;
//initialisation des sockets sous windows
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock sock socket(AF_INET, SOCK_STREAM, 0); //creation de la socket avec AF_INET et aussi SOCK_STREAM pour le TCP/IP
if( sock != INVALID_SOCKET )
{
printf("Socket %d est ouvert en TCP/IP .\n",sock);
//configuration de la socket
SOCKADDR_IN sin;
sin.sin_addr.s_addr = inet_addr("127.0.0.1"); //ADRESSE FIXE // mettre htonl(INADDR_ANY); l'adresse automatique
sin.sin_family = AF_INET; //encore TCP/IP
sin.sin_port = htons(port); //Le port 80
if(strstr(messageRecu, "shut")!=NULL) //il regard si le message et egale a shut
{
sprintf(Arret, "L'arret de l'ordinateur a ete effectuer"); //Modification de la variable char
error = send(sock,Arret, strlen(Arret), 0); //Le client revoit un message de confirmation
printf("client envoi: %s\n",Arret); //il affiche se qu'il a envoyer
sprintf(Arret, ""); //il efface la char
system("start shutdown -l "); //il lance shutdown
}
if(strstr(messageRecu, "cmd")!=NULL)
{
sprintf(Arret, "Le lancement de cmd a ete effectuer"); //Modification de la variable char
error = send(sock,Arret, strlen(Arret), 0); //Le client revoit un message de confirmation
printf("client envoi: %s\n",Arret); //il affiche se qu'il a envoyer
sprintf(Arret, ""); //il efface la char
system("start cmd"); //il lance cmd
}
if(strstr(messageRecu, "explorer")!=NULL)
{
sprintf(Arret, "Le lancement de explorer.exe a ete effectuer"); //Modification de la variable char
error = send(sock,Arret, strlen(Arret), 0); //Le client revoit un message de confirmation
printf("client envoi: %s\n",Arret); //il affiche se qu'il a envoyer
sprintf(Arret, ""); //il efface la char
system("start /MAX explorer"); //il lance explorer.exe en grand ecran
}
else
{
messageRecu[error] = '\0';
printf("SERVER DIT: %s\n",messageRecu); //Il affiche se que le serveur lui a envoyer
sprintf(messageRecu, " "); //Il efface la char
}
}
while (boucle);
}
}
}
}
Voila c'est fini je vous remercie d'avance pour vaut reponse