Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сервер tcp с двумя портами

8.5K
30 октября 2006 года
voinDi
44 / / 28.09.2006
Надо чтоб сервер на один порт принимал одного вида сообщения, а на другой порт другого. Не могу придумать как это реализовать и вообще возможно ли?
240
30 октября 2006 года
aks
2.5K / / 14.07.2006
В чем проблемма. В разных потоках своего процесса создавай два разных сокета на разные порты и слушай.
Только вот непонятно для чего такое надо.
8.5K
30 октября 2006 года
voinDi
44 / / 28.09.2006
Так надо, потому что я использую порт 502 для Modbus, а другой нужен для синхринизации.
Знчит я создаю два сокета сервера и ориентирую их на разные порты с помощью процедуры sockaddr_in и функции bind. Потом у меня весконечный цикл для Modbus, в котором я общаюсь с клиентом, а куда вставить цикл для обработки второго порта?
240
30 октября 2006 года
aks
2.5K / / 14.07.2006
В разные потоки вставляй. Есть такое понятие как поток (thread). Это паралально (ну псевдопаралельно конечно на обычном процессоре) выполняющиеся легковесные процессы внутри одного общего процесса выполняющегося в ОС. Вот создавай 2 thread-а а дальше все действия в них одинаковые и цикл обработки в том числе.
На каком языке пишешь, какие библиотеки исспользуешь, под какую ОС? Так будет прощще подсказать где читать.

Хотя мне всеравно непонятно - что мешает все взаимодействие организовать через один сокет.
И еще непонятно, как вопрос относится к веб-програмированию. Если конечно это не часть какого то сайта )
8.5K
30 октября 2006 года
voinDi
44 / / 28.09.2006
Пишу для контроллера, ОС типа ДОС, библиотека похода на WinSock, язык С.

Порт 502 используется только для Modbus, а синхронизацию нельзя сделать с Modbus. ПО возможно будет сертифицироваться, чтоб не было проблем.

Я правильно пиняла, сокет сервера типа SOCK_STREAM - это и есть поток, сколько сокетов создам, столько и потоков? С циклом понятно, только как их совместить. В один засунуть или по прерыванию переходить с одного на другой?

А к какой теме относится мой вопрос?
240
30 октября 2006 года
aks
2.5K / / 14.07.2006
[QUOTE=voinDi]Пишу для контроллера, ОС типа ДОС, библиотека похода на WinSock, язык С.
[/QUOTE]
ДОС в том плане, что совместимая с MS или IBM DOS?

Цитата:

Я правильно пиняла, сокет сервера типа SOCK_STREAM - это и есть поток, сколько сокетов создам, столько и потоков?


Нет неправильно. В потоке тот же еод выполняется паралельно.
Другое дело что в ДОСе нет не то что поддержки многопоточности, а даже многозадачности как таковой. Да и собственно писать что то серьезное тяжело. Тогда надо гораздо конкретней все данные привести.

Цитата:

А к какой теме относится мой вопрос?


Ну куда нибудь из разделов по С/С++ или в общие вопросы программирования. Но к веб программированию - это ни каким боком.

8.5K
30 октября 2006 года
voinDi
44 / / 28.09.2006
нашла, через функция select
Спасибо за ответы
240
31 октября 2006 года
aks
2.5K / / 14.07.2006
Ага, через селект можно, хотя в таком случае - это не совсем правильно, ибо сколько селектов будет на каждого клиента же еще селекты.
А вобще довольно странная у вас задача )
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог