Bonjour,
j’ai un simple code en C pour établir une connexion entre client et serveur
le serveur est toujours en écoute
le client envoi un message au serveur
le serveur répond par la bonne réception
Socket_Client :
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <string.h>
int main()
{
struct sockaddr_in sockserver;
char buffer[512];
int c;
in_addr_t adresse_serveur = inet_addr("127.0.0.1");
bzero(&sockserver,sizeof(sockserver));
bcopy(&adresse_serveur,&sockserver.sin_addr, sizeof(adresse_serveur));
sockserver.sin_family=AF_INET;
sockserver.sin_port=htons(3333);
//Création socket client
c=socket(AF_INET, SOCK_STREAM,0);
// Connexion au serveur
if(connect(c,(struct sockaddr *)&sockserver,sizeof(sockserver)) < 0) {
printf("Erreur de connexion !! \n");
exit(1);
}
//Envoyer un message au serveur
write(c, "bonjour serveur \n", 512);
//Recvoir du message client
read(c, buffer, 512);
printf("Message serveur: %s \n", buffer);
//Terminer
close(c);
}
Socket_Server :
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
int main ()
{
int d,dc, taille_addrc;
char buf[512];
struct sockaddr_in addrs, addrc;
// création de la socket
d=socket(AF_INET, SOCK_STREAM, 0);
bzero(&addrs,sizeof(addrs));
//fonction bind
addrs.sin_family=AF_INET;
addrs.sin_port=htons(3333);
addrs.sin_addr.s_addr=htonl(INADDR_ANY);
bind(d, (struct sockaddr *)&addrs, sizeof(addrs));
//Ecoute
listen(d,5);
taille_addrc=sizeof(addrc);
while (1)
{ // Fonction accept
dc=accept(d, (struct sockaddr *)&addrc, &taille_addrc);
//Recevoir le message du client
read(dc,buf, 512);
printf("Message reçu: %s\n ",buf);
// Envoyer un message au client
write(dc,"bien reçu \n",512);
}
return 0;
}
je suis un débutant sur la programmation en C, et je voulu avoir de l’aide afin de modifier les deux programmes et avoir le résultat suivant :
- le client envoi un url (page html en local) au serveur (je travail sur VM sous virtalbox)
- le serveur répond par le continue de la page ou ouvre directement la page sur navigateur.
Merci,