Communication client serveur
bonsoir a tous !
je débute en programmation de socket et quand je dis je débute c'est une histoire de quelques heures :)
j'ai suivie pendant ces heures de nombreux tuto et j'ai essayer de generé un code rassemblant tout ce que j'ai vu.
mon code est simple je cherche juste a créer un serveur et un client.
le serveur envoie un message au client et le client l'affiche.
sauf que biensur il ne l'affiche pas. je suis sur que mon erreur doit etre facilement identifiable mais moi je ne l'a trouve pas
merci pour vos reponses voici mon code :
le client:
Code:
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
| #include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
int main(int argc,char**argv){
int sock; // le socket
struct sockaddr_in sin; // la structure qui contient les informations technique du socket
char * ip_destination = "127.0.0.1"; // l'adresse de l'hote
char * buffer[256]; // buffer de stockage de l'information recue
int port = 23; // le port que l'on veut observer
sock = socket(AF_INET, SOCK_STREAM, 0); // socket(famille du socket , type de socket , protocol)
sin.sin_addr.s_addr = inet_addr(ip_destination); // definition de l'adresse du serveur
sin.sin_family = AF_INET; // la famille du socket
sin.sin_port = htons(port); // definition port que l'on veut observer
connect(sock, (struct sockaddr *)&sin, sizeof(sin));// connection du socket sur le port
recv(sock, buffer, sizeof(buffer), 0); // reception d'une eventuelle information envoyée par le serveur
close(sock); // fermeture de la socket
printf("Information recue : %s",buffer);
return 0;
} |
et puis le serveur :
Code:
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
| #include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
int main(int argc,char**argv){
int sock; // socket du serveur
int csock; // socket du client
struct sockaddr_in sin; // informations du socket serveur
struct sockaddr_in csin; // informations du socket client
unsigned int sinsize = sizeof(csin); // on stock la taille du socket client
sock = socket(AF_INET, SOCK_STREAM, 0); // socket(famille du socket , type de socket , protocol)
sin.sin_addr.s_addr = INADDR_ANY; // le socket ecoutera n'importe quelle connection
sin.sin_family = AF_INET; // la famille du socket
sin.sin_port = htons(23); // le port utilisé
bind(sock, (struct sockaddr *)&sin, sizeof(sin)); // connection du socket sur le port
listen(sock, 0); // le socket ecoute maintenant les connections
while(1){
csock = accept(sock, (struct sockaddr*)&csin, &sinsize); // on accept une connection au serveur
send(csock, "Message envoyé !\r\n", 18, 0); // on envoie un message au client
}
return 0;
} |
je compile le tout je crée deux executables client.exe et serveur.exe je lance le serveur et ensuite le client mais rien ne s'affiche dans mon shell
merci !