Какой инструмент можно использовать для подключения двух серверов TCP / IP?

1427
Thomas Bratt

Инструмент должен подключаться к любым двум серверам TCP / IP и прозрачно маршрутизировать отправку и получение между ними. Инструмент должен подключаться к обоим серверам TCP / IP и прозрачно пересылать любые данные, которые он получает между ними.

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

1
В каком контексте? В зависимости от того, о какой программе вы говорите, она может варьироваться от «Невозможного» до «Проверить« клиента »в разделе« Опции »». Grant 14 лет назад 0
Требуется больше информации. Что вы пытаетесь достичь? Mark 14 лет назад 0
Добавлено еще немного описания сейчас. Thomas Bratt 14 лет назад 0
Обычно вам нужно соединить два сетевых устройства, подключив одно к другому. Таким образом, отправитель открывает TCP / IP-соединение с слушателем. Или слушатель откроет TCP / IP-соединение с отправителем. J. Polfer 14 лет назад 0
@sheepsimulator: это правда, но в этом случае у меня есть два сервера TCP / IP, оба с прослушивающим сокетом. Отсюда и проблема! :) Thomas Bratt 14 лет назад 1
Можно ли изменить одну из этих двух серверных программ? J. Polfer 14 лет назад 0
@sheepsimulator: К сожалению, нет. Thomas Bratt 14 лет назад 0
Вы используете Windows или Linux? J. Polfer 14 лет назад 0
Окна. Я обновил теги, чтобы указать это. Thomas Bratt 14 лет назад 0
@Tommas Bratt - это звучит как очень приятный проект. Желаем удачи на вашей выставке! J. Polfer 14 лет назад 0

3 ответа на вопрос

4
J. Polfer

ПРИМЕЧАНИЕ: ответ полностью пересмотрен на основе разъяснений.

У ОП есть два сервера, оба слушают. Один отправляет данные, другой ожидает их поступления. Но они оба слушатели, и им требуется клиент TCP / IP для одновременного подключения к ним обоим.

По сути, вам нужна конвейерная программа, которая подключается к обоим серверам одновременно, и все, что отправлено с одного сервера, должно быть отправлено на другой.

Оформить заказ на программу netcat (версия для Windows доступна здесь ). Вы могли бы сделать что-то вроде этого:

nc <send svr> <send svr port> | nc <recv svr> <recv svr port> 
Спасибо за совет и ссылку :) У меня действительно есть два сервера TCP / IP, каждый из которых использует сокет прослушивания и ожидает входящего соединения. В этой настройке нет «отправляющего сервера» (т.е. клиента). Thomas Bratt 14 лет назад 0
Отлично! Я проверю это :) Thomas Bratt 14 лет назад 0
@ SheSimulator, ваши умственные способности сильны. Я бы никогда не догадался о значении этого вопроса :) vava 14 лет назад 0
Это работает, спасибо :) Просто чтобы сообщить вам - он будет использоваться для выставки в Стокгольме на следующей неделе, где он будет передавать события обнаружения движения на сервер, который я написал. В конце концов мы напишем программное обеспечение для подключения в качестве клиента, но у нас нет времени до шоу. Thomas Bratt 14 лет назад 1
@vava - Это был итеративный процесс. Проверьте мой журнал редактирования, этот ответ прошел 7 ревизий. J. Polfer 14 лет назад 0
1
David Thornley

Серверы с TCP / IP уже могут свободно общаться, если они находятся в одной сети. Вот что делает TCP / IP. Возможно, вам понадобится подключить какой-либо маршрутизатор, если они находятся в разных сетях. Если это ваша проблема, вам нужно описать ее более полно, потому что то, что может быть полезно для подключения изолированных сетей, может не подойти для подсетей, использующих NAT с одним IP-адресом.

Упоминая «сервер» и «клиент», вы, похоже, подразумеваете какое-то приложение, которое взаимодействует с TCP. Однако многие программы имеют разные роли клиента и сервера, которые не являются взаимозаменяемыми. Например, сервер Subversion не будет проверять исходное дерево. Там нет автоматического перевода, и не может быть, так как люди продолжают писать новые программы. Если у вас есть конкретное приложение или список, вы можете добавить это к своему вопросу.

Проблема в том, что у меня есть два устройства, каждое из которых ведет себя как сервер TCP / IP. Один из них будет генерировать некоторые данные при возникновении события, и я хотел бы, чтобы эти данные автоматически пересылались на другой сервер. Thomas Bratt 14 лет назад 0
0
jfmessier

Основываясь на пересмотренном тексте: «По сути, вам нужна конвейерная программа, которая подключается к обоим серверам одновременно, и все, что отправлено из одного сокета, должно быть помещено в другой», это звучит для меня как балансировщик нагрузки. И для этого вы можете взглянуть на оборудование балансировки нагрузки / отработки отказа. И этот тип соединения лучше всего управляется аппаратными устройствами.

Можете ли вы найти практический пример, где это можно использовать таким образом? Похоже на излишество. J. Polfer 14 лет назад 0
Все зависит от того, насколько быстро ваше соединение и насколько оно критично. Cisco делает часть этого оборудования. Тем не менее, вы должны иметь возможность иметь программное решение, использующее Linux и ПК с тремя или более NICS для обеспечения балансировки нагрузки. Например, если у вас есть веб-сайт, для которого требуется балансировка нагрузки / отработка отказа, у вас могут быть два веб-сайта за балансировщиком нагрузки, с некоторыми инструментами синхронизации для контента и балансировщиком нагрузки перед ними, показывая один IP-адрес. Там, где это становится сложнее, - управление сеансами без подключения. jfmessier 14 лет назад 0