Я делаю TCP / IP-сервер, который прослушивает несколько портов.Я решил использовать select для включения обработки нескольких событий.
Итак, на данный момент у меня есть два сокета, которые подключены к двум разным портам (3000, 3001).
Once I 'м внутри цикла выбора, я хочу, чтобы сервер реагировал по-разному в зависимости от порта, который он обрабатывает в настоящее время.Как я могу сказать, в каком сокете я нахожусь, один раз внутри выбора?
Я добавляю код для моего цикла выбора, надеюсь, вы, ребята, сможете указать мне правильное направление.Обратите внимание, что это начинается после того, как я добавил оба дескриптора файла в набор.
while(1)
{
/* Block until input arrives on one or more active sockets. */
readfds = activefds;
if (select (FD_SETSIZE, &readfds, NULL, NULL, NULL) < 0)
{
perror ("select");
exit (EXIT_FAILURE);
}
/* Service all the sockets with input pending. */
for (i = 0; i < FD_SETSIZE; ++i)
{
if (FD_ISSET (i, &readfds))
{
if (i == S_time)
{
if ((NS = accept(S_time,NULL,NULL)) < 0)
ERROR("server: accept");
FD_SET(NS, &activefds); //add the new socket desc to our active connections set
send_time(NS);
}
else if (i == S_remote)// i == S_remote
{
fprintf(stderr,"Remote");
int status = recieve_request(S_remote);
/* Data arriving on an already-connected socket. */
}
else
{
break;
}
}
} /* //end of for */
} /* //end of while */
Итак, мои два сокета - S_time и S_remote.Когда клиент подключается к временному сокету, я хочу отправить этому клиенту текущее время.Когда клиент подключается к удаленному, я хотел сделать удаленное выполнение.Как я могу сделать это различие?
Спасибо за вашу помощь.