Serveur + socket !!!

mixtape Messages postés 18 Statut Membre -  
mixtape Messages postés 18 Statut Membre -
salut tout le monde ; en faite je voulais savoir comment connecter plusieur client a mon serveur ,est ce que je doit faire plusieur socket ou comment ?!!!!! merci davance
--
the boy that u loved is the man that u fear

2 réponses

  1. faico
     
    Salam 3ala man ittaba3a alhoda !

    voici le code C d'un serveur qui repond a ce que vous voulez :

    /*

    ** selectserver.c - a cheezy multiperson chat server

    */

    #include <stdio.h>

    #include <stdlib.h>

    #include <string.h>

    #include <unistd.h>

    #include <sys/types.h>

    #include <sys/socket.h>

    #include <netinet/in.h>

    #include <arpa/inet.h>

    #define PORT 2225

    int main(void)

    {

    fd_set master;

    fd_set read_fds;

    struct sockaddr_in myaddr;

    struct sockaddr_in remoteaddr;

    int fdmax;

    int listener;

    int newfd;

    char buf[256];

    int nbytes;

    int yes=1;

    int addrlen;

    int i, j;

    FD_ZERO(&master);

    FD_ZERO(&read_fds);

    if ((listener = socket(AF_INET, SOCK_STREAM, 0)) == -1) {

    perror("socket");

    exit(1);

    }

    //if (setsockopt(listener, SOL_SOCKET, SO_REUSEADDR, &yes,

    //sizeof(int)) == -1) {

    //perror("setsockopt");

    //exit(1);

    //}

    myaddr.sin_family = AF_INET;

    myaddr.sin_addr.s_addr = INADDR_ANY;

    myaddr.sin_port = htons(PORT);

    memset(&(myaddr.sin_zero), '\0', 8);

    if (bind(listener, (struct sockaddr *)&myaddr, sizeof(myaddr)) == -1) {

    perror("bind");

    exit(1);

    }

    if (listen(listener, 10) == -1) {

    perror("listen");

    exit(1);

    }

    FD_SET(listener, &master);

    fdmax = listener;

    for(;;) {

    read_fds = master;

    if (select(fdmax+1, &read_fds, NULL, NULL, NULL) == -1) {

    perror("select");

    exit(1);

    }

    for(i = 0; i <= fdmax; i++) {

    if (FD_ISSET(i, &read_fds)) {

    if (i == listener) {

    addrlen = sizeof(remoteaddr);

    if ((newfd = accept(listener, (struct sockaddr *)&remoteaddr,

    &addrlen)) == -1) {

    perror("accept");

    } else {

    FD_SET(newfd, &master);

    if (newfd > fdmax) {

    fdmax = newfd;

    }

    printf("selectserver: new connection from %s on "

    "socket %d\n", inet_ntoa(remoteaddr.sin_addr), newfd);

    }

    } else {

    if ((nbytes = recv(i, buf, sizeof(buf), 0)) <= 0) {

    if (nbytes == 0) {

    printf("selectserver: socket %d hung up\n", i);

    } else {

    perror("recv");

    }

    close(i);

    FD_CLR(i, &master);

    } else {
    printf("------------------>salam %s\n",buf);

    for(j = 0; j <= fdmax; j++) {

    if (FD_ISSET(j, &master)) {

    if (j != listener && j != i) {

    if (send(j, buf, nbytes, 0) == -1) {

    perror("send");

    }

    }

    }

    }

    }

    }

    }

    }

    }

    return 0;

    }
    0
  2. mixtape Messages postés 18 Statut Membre 1
     
    merci faico , mais est ce que tu peut me dire au juste si je doit cree plusieur socket pour connecter plusieur client ou juste qu 1 .... merci et salam
    0