#include <stdio.h> #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("\nNouveau client\n");
sprintf(Buffer,"Hello\r\n"); send(Satt,Buffer,strlen(Buffer),0); } else {
clientmsgsize = recv(Test.fd_array[0],Buffer,sizeof(Buffer),0); // Reception du message
if(clientmsgsize <= 0) { printf("Perte d'une connection\n"); FD_CLR(Test.fd_array[0],&Ref); closesocket(Test.fd_array[0]); Test = Ref; continue; }
Buffer[clientmsgsize] = '\0'; printf("\nrecu de %d %s",Test.fd_array[0],Buffer); } Test = Ref ; } }
|