Есть три компьютера, сервер-клиент-B и сервер-C. Все подключены через TCP / IP. Компьютерный сервер A и клиент B находятся за брандмауэром и могут устанавливать только внешние соединения. Компьютерный сервер-C умеет как слушать, так и подключаться.
Сервер-A и сервер-C будут запускать мою программу и, следовательно, могут как слушать, так и подключаться, по крайней мере, я могу запрограммировать их для этого. Программное обеспечение, которое работает на Client-B, может только подключаться.
Я хочу установить прямое соединение от Клиента-Б к Серверу-А. Я не могу создать прямое соединение между клиентом-B и сервером-A (или наоборот) из-за брандмауэра. Но я могу подключить и Client-B, и Server-A к Server-C.
Чтобы заставить это работать, я мог бы создать прокси-сервер на сервере C, который просто перенаправляет пакеты с клиента B на сервер A (и наоборот), но я не хочу этого делать - я хочу прямой соединение между клиентом-B и сервером-A.
Мой вопрос, есть ли способ, которым Server-C может манипулировать IP-пакетами, так что Server-C изначально необходим только для соединения двух, но затем может «соединить» два потока сокетов, чтобы они могли напрямую отправлять пакеты друг друга?
Общий пример будет; Домашний компьютер Хотите отправить некоторые музыкальные файлы на компьютер С. Оба они находятся за брандмауэрами / маршрутизаторами / чем угодно. Поэтому они могут подключаться только к какому-то серверу B через порт 80. И теперь я хочу, чтобы сервер B совершил какое-то волшебство, чтобы музыкальный файл не отправлялся через сервер B, а напрямую с A на C ...
Любая помощь или советы с благодарностью!