Господа, поделитесь пожалуйста ссылочкой или примером исходников сервера, подерживающего несколько TCP соединений одновременно :)
apache, squid, xinetd, mysql, postgresql, sendmail, postfix....Простейший код:
socket(...);
bind(...);
listen(...);while (1) {
int s=accept(...);
if (s < 0) continue;
case (fork()) {
0: // потомок
/* Дружно работаем с клиентом через соединение s */
exit(код_возврата);
-1: // ошибка
default: // родитель
close(s); break;
};
};
Более сложные реализации:1. использовать функции poll/select для работы с куче
2. запускать N потомков через fork и с пользуя механизм разделяемой памяти отдавать им соединения;
3. работать не с процессами, а с потоками (это я могу заслать, если хочешь).
apache, squid, xinetd, mysql, postgresql, sendmail, postfix....Простейший код:
socket(...);
bind(...);
listen(...);while (1) {
int s=accept(...);
if (s < 0) continue;
case (fork()) {
0: // потомок
/* Дружно работаем с клиентом через соединение s */
exit(код_возврата);
-1: // ошибка
default: // родитель
close(s); break;
};
};
Более сложные реализации:1. использовать функции poll/select для работы с кучей соединений;
2. запускать N потомков через fork и с пользуя механизм разделяемой памяти отдавать им соединения;
3. работать не с процессами, а с потоками.Пример последнего (самопальный сервер авторизации) я могу заслать по почте, если хочешь. Раскидывание соединений по потокам там уже отлажено и вряд ли будет меняться.