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
A voir également:

2 réponses

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
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