Попытка реализовать параллельный TCP-сервер и клиент в c - PullRequest
0 голосов
/ 13 марта 2011

Я реализовал параллельный сервер и клиент TCp в c, используя потоки и вилки.Но у меня нет никакого способа проверить, есть ли какой-либо другой стандартный способ реализации этого.

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

Спасибо за помощь

Ответы [ 3 ]

3 голосов
/ 13 марта 2011

Там нет "стандартной идеи".Ваш подход будет зависеть от требований, производительности, масштабируемости и количества времени, отводимого на разработку.

  • Один поток на клиента
    • Возможно с пулом потоков
  • Модель многопоточного конвейера с N рабочими
  • Один поток на сервер, используя poll / select
  • Один поток на сервер, основанный на событиях с обратными вызовами
  • Форкирование дочерних элементов, по одному на соединение с клиентом
    • предварительно разветвленные дочерние элементы, напримерВеб-сервер Apache

и т. Д.Все они имеют свое применение.

2 голосов
/ 13 марта 2011

Несколько хороших ссылок для вас:

Надеюсь, это поможет.

1 голос
/ 13 марта 2011

Параллельные серверы (если они достаточно простые и производительность не является большой проблемой) часто создаются с помощью poll () или select () . Теперь это предполагает, что вы находитесь на * nix. Если вы можете использовать C ++, библиотеки boost имеют ASIO , которая является кроссплатформенной библиотекой, которая позволяет вам писать один раз и компилировать везде. На самом деле не существует стандартного способа сделать что-то, поскольку идеи варьируются от ОС к ОС.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...