Я написал однопоточный сервер в c под Linux, этот сервер прослушивает несколько портов, сервер должен получать текстовые сообщения, я использую этот код для прослушивания сокетов:
while(1){
FD_ZERO(&socks);
for (i = 0 ; i < IndexConnctedSocket ; i++ )
FD_SET(newSocketFds[i],&socks);
readsocks = select(highNewSocket + 1,&socks,(fd_set*) 0,
(fd_set*) 0 ,&timeout);
for (j = 0 ; j <= index ; j++ ){
if ( FD_ISSET(newSocketFds[j],&socks) != 0 ){
bzero(buffer, 2048);
n = read(newSocketFds[j], buffer, 2048);
if (n < 0)
error("ERROR reading from socket");
i = 0;
n = write(newSocketFds[j], "I got your message ",18);
if (n < 0)
error("ERROR writing to socket");
}
}
, но когдаЯ отправляю сообщения на сервер (через клиент, который подключается ко всем сокетам), некоторые из сообщений теряются, и когда я подключаюсь к серверу с разных клиентов, это работает отлично.