Communiquer entre deux machines en C
Ymaq
Messages postés
45
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis en train de réaliser un programme en C qui permet d'établir une connexion entre 2 machines, une serveur et une client, puis de démarrer une "communication" entre ces 2 machines, et de lancer un programme sur la machine serveur via la machine client.
J'ai déjà la connexion qui s'établie, mais je bloque pour le reste...
Voici mes codes pour le client et le serveur (travail sous Linux).
client.c
serveur.c
Je suis en train de réaliser un programme en C qui permet d'établir une connexion entre 2 machines, une serveur et une client, puis de démarrer une "communication" entre ces 2 machines, et de lancer un programme sur la machine serveur via la machine client.
J'ai déjà la connexion qui s'établie, mais je bloque pour le reste...
Voici mes codes pour le client et le serveur (travail sous Linux).
client.c
#include <stdio.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <string.h> #include <stdlib.h> int creation_socket() { int S; S=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); return S; } int connect_socket(int S, char * addr, char * port) { struct sockaddr_in addr_serv; memset(&addr_serv,0,sizeof(addr_serv)); addr_serv.sin_family=AF_INET; addr_serv.sin_addr.s_addr=inet_addr(addr); addr_serv.sin_port=htons(atoi(port)); int C; C=connect(S,(struct sockaddr *) & addr_serv, sizeof(addr_serv)); return C; } int main (int argc, char ** argv) { int s; s=creation_socket(); int c; c=connect_socket(s,argv[1],argv[2]); if (c==-1) { printf("Echec connexion.\n"); } else { printf("Connexion établie, socket numéro %d.\n",s); } return 0; }
serveur.c
#include <stdio.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <string.h> #include <stdlib.h> int creation_socket() { int S; S=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); return S; } int bind_socket(int S, char * port) { struct sockaddr_in addr_serv; memset(&addr_serv,0,sizeof(addr_serv)); addr_serv.sin_family=AF_INET; addr_serv.sin_addr.s_addr=htonl(INADDR_ANY); addr_serv.sin_port=htons(atoi(port)); int B; B=bind(S,(struct sockaddr *) & addr_serv, sizeof(addr_serv)); return B; } int socket_connexion(int S) { struct sockaddr_in autre; memset(&autre, 0 , sizeof(autre)); int connexion; connexion = accept(S,(struct sockaddr *) & autre, sizeof(autre)); return connexion; } int main (int argc, char ** argv) { int s; s=creation_socket(); int b; b=bind_socket(s,argv[1]); listen(s,50); int c; c=socket_connexion(s); if (c==-1) { printf("Echec connexion.\n"); } else { printf("Connexion établie.\n"); } return 0; }
A voir également:
- Communiquer entre deux machines en C
- Nombre de jours entre deux dates excel - Guide
- Deux ecran pc - Guide
- Comment faire deux colonnes sur word - Guide
- Itinéraire google map entre deux adresses - Guide
- Fusionner deux cellules excel en gardant le contenu - Guide
1 réponse
C'est un bon début.
Maintenant il te suffit de faire des recv et send coté client ET serveur pour avoir une communication.
Un conseil, si tu ne veux pas faire un système de thread qui sépare l'envoie de la réception, je te conseil fortement de mettre sur papier le protocole de communication entre les deux. Sinon, tu risques de t'embrouiller très vite et d'avoir les deux qui attendent une réponse de l'autre.
Maintenant il te suffit de faire des recv et send coté client ET serveur pour avoir une communication.
Un conseil, si tu ne veux pas faire un système de thread qui sépare l'envoie de la réception, je te conseil fortement de mettre sur papier le protocole de communication entre les deux. Sinon, tu risques de t'embrouiller très vite et d'avoir les deux qui attendent une réponse de l'autre.