The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"пример исходников сервера"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"пример исходников сервера"
Сообщение от mazer Искать по авторуВ закладки on 29-Авг-03, 16:39  (MSK)
Господа, поделитесь пожалуйста ссылочкой или примером исходников сервера, подерживающего несколько TCP соединений одновременно :)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "пример исходников сервера"
Сообщение от XMan Искать по авторуВ закладки on 30-Авг-03, 20:02  (MSK)
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. работать не с процессами, а с потоками (это я могу заслать, если хочешь).

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "пример исходников сервера"
Сообщение от XMan Искать по авторуВ закладки on 30-Авг-03, 20:08  (MSK)
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. работать не с процессами, а с потоками.

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

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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