Программирование работы сервера с множеством клиентов
Подскажите, пожалуйста, принцип решения следующих задач,-
У меня есть сетевой TCP/IP сервер и куча TCP/IP клиентов. Мне нужно обеспечить перманентное взаимодействие между клиентами и сервером, при этом клиенты обращаются к серверу беспорядочно.
Я, допустим, могу решить это за счет либо выделения каждому соединению своего порта, либо за счет создания одного управляющего соединения, а другого общего (через какое идут данные с разных сокетов).
Не хочу ошибиться, и поэтому хотелось бы знать общепринятые способы решения аналогичных проблем (только для мультиплатформенного кода с BSDSockets/WinSocks, без компонентов и иже с ними).
PS: Также подскажите пожалуйста возможна ли мешанина байтов при одновременной посылке данных с разных клиентов на один и тот же сокет, или там действует система очереди.
Заранее спасибо за любой ответ.
С Уважением,
Иванов Артем,
cubereality.com
теорией. все проблемы, как то: возможное перемешивание байт, различение разных клиентов беред на себя стек TCP/IP. вам об этом заботится не надо. рекомендую найти книгу Снейдера "Эффективное программирование TCP/IP" и почитать.
Но насчет мультиплатформенности и
безкомпонентности -это не так однозначно...
Есть вариант создать основной
код приложения, а для Windows скомпилить в
Builder , а для linux скомпилить в Kylix
вот и вся мультиплатформенность. При правльной
организации кода можно легко и быстро
отпортировать из одной среды в другую.
Все клиенты могут успешно работать с одним принимающим портом одновременно - проблем не будет. (Он всего-лишь диспетчер, принимающий Connect, а реальная передача данных идет с динамически назначаемых портов.
Цитата:
Originally posted by ART-CODE
Хорошую книжку советуют! (сам рекомендую)
Но насчет мультиплатформенности и
безкомпонентности -это не так однозначно...
Есть вариант создать основной
код приложения, а для Windows скомпилить в
Builder , а для linux скомпилить в Kylix
вот и вся мультиплатформенность. При правльной
организации кода можно легко и быстро
отпортировать из одной среды в другую.
Хорошую книжку советуют! (сам рекомендую)
Но насчет мультиплатформенности и
безкомпонентности -это не так однозначно...
Есть вариант создать основной
код приложения, а для Windows скомпилить в
Builder , а для linux скомпилить в Kylix
вот и вся мультиплатформенность. При правльной
организации кода можно легко и быстро
отпортировать из одной среды в другую.
ну Снейдер между прочим в книге использует кроссплатформенный каркас клиентов и серверов. я его файлы, идущие с книгой использую в реальных прогах :)
Цитата:
Originally posted by ART-CODE
Все клиенты могут успешно работать с одним принимающим портом одновременно - проблем не будет. (Он всего-лишь диспетчер, принимающий Connect, а реальная передача данных идет с динамически назначаемых портов.
Все клиенты могут успешно работать с одним принимающим портом одновременно - проблем не будет. (Он всего-лишь диспетчер, принимающий Connect, а реальная передача данных идет с динамически назначаемых портов.
неправда. на стороне сервера обмен идет по одному порту.
Согласен, я не корректно выразился. (за исключением случая перенаправления клиента
на другой порт).
Cоединение характеризуется 4 параметрами.
1 - Ip адрес Сервера - статический (условно)
2 - Port Сервера - статический
3 - Ip адрес клиента - статический или динамический
4 - Port клиента - динамический (практически всегда)
Сопоставляя все эти данные всегда есть
возможность отличить одно соединение от другого.
Цитата:
Originally posted by ART-CODE
неправда. на стороне сервера обмен идет по одному порту.
Согласен, я не корректно выразился. (за исключением случая перенаправления клиента
на другой порт).
Cоединение характеризуется 4 параметрами.
1 - Ip адрес Сервера - статический (условно)
2 - Port Сервера - статический
3 - Ip адрес клиента - статический или динамический
4 - Port клиента - динамический (практически всегда)
Сопоставляя все эти данные всегда есть
возможность отличить одно соединение от другого.
неправда. на стороне сервера обмен идет по одному порту.
Согласен, я не корректно выразился. (за исключением случая перенаправления клиента
на другой порт).
Cоединение характеризуется 4 параметрами.
1 - Ip адрес Сервера - статический (условно)
2 - Port Сервера - статический
3 - Ip адрес клиента - статический или динамический
4 - Port клиента - динамический (практически всегда)
Сопоставляя все эти данные всегда есть
возможность отличить одно соединение от другого.
вот теперь согласен. рад, что мы пришли к взаимопониманию
Цитата:
Originally posted by squirL
ну Снейдер между прочим в книге использует кроссплатформенный каркас клиентов и серверов. я его файлы, идущие с книгой использую в реальных прогах :)
ну Снейдер между прочим в книге использует кроссплатформенный каркас клиентов и серверов. я его файлы, идущие с книгой использую в реальных прогах :)
А нельзя-ли, пока Я до магазина не добрался, примеры к книжке выложить в Инет?
Цитата:
Originally posted by ART-CODE
загляни сюда
загляни сюда
Гляжу. Скачать ничего не получается.
Цитата:
Originally posted by GIZMO
Гляжу. Скачать ничего не получается.
Гляжу. Скачать ничего не получается.
кинь в приват мыло. как попаду домой, скину тебе архив с исходниками.
Цитата:
Originally posted by squirL
кинь в приват мыло. как попаду домой, скину тебе архив с исходниками.
кинь в приват мыло. как попаду домой, скину тебе архив с исходниками.
Отбой, нашел. Спасибо за беспокойство.