2013-08-30 2 views
0

Мы разрабатываете модель Mutliple клиент-сервер для Сервер должен:C: Socket Программирование Дизайн Optionss

  1. Перенести файл конфигурации (размер 2000kB) к клиенту
  2. Послать UDP/TCP-порт информацию для дальнейшей связи
  3. Получить статистические данные от клиента каждые 2 второй

Мы планируем с помощью UDP (в основном за счет скорости).
Я с нетерпением жду некоторых вариантов дизайна, используя UDP, и предложения, связанные с реализацией.

+1

Сколько одновременных клиентов? Читайте о проблеме [C10K] (http://en.wikipedia.org/wiki/C10k_problem)! Я не уверен, что вам действительно нужно использовать UDP ... –

+2

Насколько важна статистическая информация? Можете ли вы пойти с отсутствующим сообщением раз в то время? Вы можете пойти с искаженным? – cnicutar

+2

Какой у вас конкретный вопрос? – Carsten

ответ

3

с использованием UDP (в основном за счет скорости)

== бедных принятия решений в этом случае. Давайте рассмотрим some of the reasons UDP might be considered faster в отношении того, что вы делаете, и ограничений, которые UDP устанавливает против TCP.

UDP - это, в некоторых случаях, теоретически, быстрее, потому что он немного сэкономит некоторые вещи уровня интеллекта [blah blah]. Отлично. Тем не менее, вы получаете то, за что платите, а несколько вещей, за которые вы не платите за UDP:

  1. Постоянное соединение.

  2. Согласованное соединение (то есть сообщение, в котором информация поступает в том порядке, в котором она была отправлена).

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

Вам нужно №1, потому что вы принимаете непрерывный поток данных с определенного источника. Используя TCP, это очень просто: клиент подключается и начинает отправку. Используя UDP, нет постоянного сервера < -> отношения с клиентом, поэтому единственный способ решить, какая информация принадлежит кому IP и MAC-адрес, что, вероятно, не очень надежный метод.

Чтобы получить компенсацию, вам нужно будет: A) Добавить больше данных в каждый образец, идентифицировать клиента и B) Сделать больше обработки пользовательского пространства, чтобы идентифицировать владельца каждой части данных.

Вам нужно №2, потому что есть (возможно) нет точки в данных выборки каждые две секунды, если временное соотношение является случайным (образец A за 2 секунды до образца B или наоборот?). Чтобы получить компенсацию, вам нужно будет: A) Добавить больше данных в каждый образец, указывая порядок времени, и B) Делать больше обработки пользовательского пространства для каждой части, чтобы правильно упорядочить образцы.

Использование TCP.

+0

В случае с OP я не думаю, что постоянный связи действительно необходимы. С другой стороны, согласованность представляется более важной для ОП, поэтому я бы рекомендовал TCP только в этом. –

+0

Точка взята. Я предположил, что конкретное происхождение данных важно, чего может и не быть. Думаю, вполне возможно, что порядок тоже не важен, и в этом случае UDP начинает иметь смысл. (Хотя: если происхождение не важно, трудно понять, как будет иметь значение последовательный порядок ...) – delicateLatticeworkFever

Смежные вопросы