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
|
#include<netinet/in.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<string.h>
#include<strings.h>
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<unistd.h>
#define MAXCONN 2
#define TAILLE 20
int main(int argc, char * argv[]) {
if ( argc < 2 ) { perror("Parametre manquant [port]"); exit(1); }
if ( argc > 2 ) { perror("Parametres supperflus"); }
struct sockaddr_in serveur, client;
int desc, caractere_recu, lg_addr = sizeof(client);
char message[TAILLE];
if ( (desc = socket( AF_INET, SOCK_STREAM, 0)) < 0 ) {
perror("Erreur : Creation du socket");
exit(1);
}
serveur.sin_family = AF_INET;
serveur.sin_port = htons(atoi(argv[1]));
serveur.sin_addr.s_addr = htonl(INADDR_ANY);
bzero( &serveur.sin_zero, 8 );
if ( bind(desc, (struct sockaddr *)&serveur, sizeof(serveur)) < 0 ) {
perror("Erreur : Attachement du socket");
exit(1);
}
if ( listen(desc,MAXCONN) < 0 ) {
perror("Erreur : Ecoute les demandes de connexion");
exit(1);
}
if ( accept(desc,(struct sockaddr *)&client, &lg_addr) < 0 ) {
perror("Erreur : Accept la connexion");
exit(1);
}
if ( (caractere_recu = read(desc, message, sizeof(message))) < 0 ) {
printf("errno = %d",errno);
perror("Erreur : Reception des donnees");
exit(1);
}
printf("[SERVER] Message recu : %s \n",message);
close(desc);
} |
Partager