слушатель удаленного сокета - PullRequest
0 голосов
/ 01 сентября 2011

У меня есть вопрос. Я хотел бы создать прослушиватель сокетов, но адрес прослушивания с удаленного сервера.

Так, скажем, у SERVER A есть прослушиватель сокетов. SERVER B (например, IP = 123.456.78.23:1970) имеет порт прослушивания.

Если я создаю сокет следующим образом (и выполняю его на сервере A):

IP EndPoint endpointIp = new IPEndPoint(123.456.78.23, 1970);
this._socket = new Socket(endpointIp.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
this._socket.Bind(endpointIp); // crashes here
this._socket.Listen(MaxPendingConnections);

Программа аварийно завершает работу с кодом Bind: «Запрошенный адрес недопустим в своем контексте».

Как прослушать удаленный порт?

Спасибо!

Ответы [ 2 ]

1 голос
/ 01 сентября 2011

Вы не можете открыть сокет, используя IPEndPoint (в основном IP и порт) другого сервера.То, о чем вы спрашиваете, это подмена сервера - притворяется другим сервером и получает адресованный ему трафик.Вам необходимо настроить сервер A на использование IP-адреса сервера B и убедиться, что каждый маршрутизатор на пути к нему может подключиться к серверу A с этим IP-адресом.

Изменить: После вашего комментарияна оригинальный вопрос, что вам нужно, это балансировщик нагрузки.Чтобы позволить серверу B вступить во владение, когда сервер A мертв, у вас должен быть маршрутизатор или сервер, который получает весь трафик и направляет его на сервер A, тогда, если он чувствует, что сервер A не работает, перенаправит весь трафик на серверB. Разумеется, поскольку вы уже выполняете балансировку нагрузки, вы также можете сделать его реальным балансировщиком нагрузки, перенаправляя трафик на оба сервера, когда оба работают, и на оставшийся, когда другой отказывает.

1 голос
/ 01 сентября 2011

Вы не можете прослушивать порт на одном компьютере с другого. (Следовательно, сообщение «недопустимо в этом контексте»)

Что вы МОЖЕТЕ сделать, так это написать одну программу / службу, которая работает на SERVER B и прослушивает порт, и использовать Remoting или WCF, чтобы написать ДРУГУЮ программу, которая работает на SERVER A, которая отслеживает вашу службу на SERVER B вместо того, чтобы пытаться прослушивать порт на SERVER B.

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