Tien si tu veu un exemple de serveur
#include <stdio.h> #define FD_SETSIZE 500 #include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
SOCKET Sserv; SOCKET Satt;
SOCKADDR_IN sockaddrserv; SOCKADDR_IN sockaddrclient;
int sockaddrclientsize = sizeof (struct sockaddr_in); int clientmsgsize; char Buffer[1024]; int port = 6666;
fd_set Ref; fd_set Test;
void main() { WSADATA wsa; WSAStartup(MAKEWORD(2,0),&wsa);
sockaddrserv.sin_family=AF_INET; sockaddrserv.sin_addr.s_addr=INADDR_ANY; sockaddrserv.sin_port=htons(port);
FD_ZERO(&Ref); FD_ZERO(&Test);
Sserv = socket(AF_INET,SOCK_STREAM,0); bind(Sserv,(SOCKADDR*)&sockaddrserv,sizeof(sockaddrserv)); listen(Sserv,0);
FD_SET(Sserv,&Ref); Test = Ref;
for(;;) { select(0,&Test,NULL,NULL,NULL);
if(FD_ISSET(Sserv,&Test)) { Satt = accept(Sserv,(struct sockaddr *)&sockaddrclient,&sockaddrclientsize); // accept le client FD_SET(Satt,&Ref) ;
printf("\nNouvelle client\n");
wsprintf(Buffer,"Hello\r\n"); send(Satt,Buffer,sizeof(Buffer),0); memset(Buffer,0,sizeof(Buffer)); } else {
clientmsgsize = recv(Test.fd_array[0],Buffer,sizeof(Buffer),0); // Reception du message printf("%s",Buffer); memset(Buffer,0,sizeof(Buffer));
if(clientmsgsize <= 0) { printf("\nPerte d'une connection\n"); FD_CLR(Test.fd_array[0],&Ref); closesocket(Test.fd_array[0]); } } Test = Ref ; } }
|