C # TCP сервер и клиент с требованием кросс-коммуникации - PullRequest
1 голос
/ 25 февраля 2011

Мне нужна обратная связь с некоторой логикой программирования.

Я разрабатываю TCP-сервер с использованием C #, который также будет выступать в качестве TCP-клиента.По сути, клиентское устройство (A) связывается с моим TCP-сервером и отправляет информацию.Исходя из того, что TCP-сервер может (или не может) общаться с другим сервером (Z) по TCP, отправлять ему некоторые данные и иногда получать ответ, который он передает обратно на устройство A. Пока все хорошо, это работает довольно хорошо.Однако иногда Z создает новое соединение с моим C # TCP-сервером и хочет отправить некоторые данные на устройство A.

Это то, с чем я борюсь.Я могу получить данные из Z, прочитать их и увидеть IP-адрес назначения в тексте, который читается.Но как мне отправить это на устройство A, которое все еще подключено через TCPListener в своем собственном потоке?

Я мог бы использовать статические переменные и механизм «блокировки», чтобы поток искал что-то для отправки вустройство, но что произойдет, если я добавлю устройство B & C?

Мне в основном нужен какой-то способ, основанный на данных, отправленных из Z по новому соединению, определяющий, какой TCPListener, в каком потоке данные должны быть отправлены на устройства.

Это делает мою головупоэтому любые ссылки, которые у вас могут быть, или грубая логика (не обязательно код) очень помогли бы.

И да, я некоторое время искал в Google, но все примеры, которые я нашел,проще, чем мне нужно.

Заранее спасибо!

1 Ответ

1 голос
/ 25 февраля 2011

Вы можете оставить Dictionary<IPAddress,TCPClient> для этой цели и отправить сообщение по IP-адресу назначения. Убедитесь, что вы корректно обрабатываете несколько клиентов с одного IP-адреса, либо отбрасывая предыдущее соединение, одновременно принимая новое, либо вместо этого Dictionary<IPAddress,List<TCPClient>>

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