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 58 59 60 61 62
|
while(1)
{
/* Building SocketList */
FD_ZERO(&SocketList);
for(ListNum = 0; ListNum < 5; ListNum++)
{
if(ConnectList[ListNum] != 0)
{
FD_SET(ConnectList[ListNum], &SocketList);
}
}
iResult = select(highDescriptor+1, &SocketList, NULL, NULL, NULL);
if(iResult < 0)
{
printf("Select failed\n");
}
else if(iResult == 0)
{
printf("Nothing ready to read\n");
}
else
{
if(FD_ISSET(ListenSocket, &SocketList))
{
printf("New connection received\n");
CurrentSocket = accept(ListenSocket, NULL, NULL);
if (CurrentSocket == INVALID_SOCKET)
{
printf("Accept failed: %d\n", WSAGetLastError());
closesocket(ListenSocket);
WSACleanup();
return 1;
}
if(CurrentSocket > highDescriptor)
{
highDescriptor = CurrentSocket;
}
for(ListNum = 0; ListNum < 5; ListNum++)
{
if(ConnectList[ListNum] == 0)
{
ConnectList[ListNum] = CurrentSocket;
break;
}
}
}
else
{
for(ListNum = 0; ListNum < SocketList.fd_count; ListNum++)
{
if(FD_ISSET(SocketList.fd_array[ListNum], &SocketList))
{
iResult = recv(SocketList.fd_array[ListNum], buffer, 14, 0);
printf("Deal with data: %s\n", buffer);
}
}
}
}
} |
Partager