The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
пример исходников сервера, !*! mazer, 29-Авг-03, 16:39  [смотреть все]
Господа, поделитесь пожалуйста ссылочкой или примером исходников сервера, подерживающего несколько TCP соединений одновременно :)
  • пример исходников сервера, !*! XMan, 20:02 , 30-Авг-03 (1)
    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. работать не с процессами, а с потоками (это я могу заслать, если хочешь).

  • пример исходников сервера, !*! XMan, 20:08 , 30-Авг-03 (2)
    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. работать не с процессами, а с потоками.

    Пример последнего (самопальный сервер авторизации) я могу заслать по почте, если хочешь. Раскидывание соединений по потокам там уже отлажено и вряд ли будет меняться.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру