Я создал базовый инструмент на C #, который открывает оболочку bind для моего Сервера.
Допустим, IP-адрес 192.168.0.101 и порт 9500.
Моя цель - перенаправить трафик с инструмента C # на мой второй сервер, допустим, он находится на 192.168.0.102 и использует тот же порт.
Чтобы получить то, что я хочу, я попытался подключить функцию ws2_32.dll "WSAConnect".
Добавил отладчик в C #, установил точку останова на функции, и в конце концов я обнаружил, что RDX содержит «sockaddr», который указывает на то, что я хочу изменить.
Первые 2 байта - это 0x02 0x00, что означает использование ipv4.
Вторые 2 - это мой порт в гексе, а следующие 4 - мой IP в гексе.
Оттуда я изменил эти байты, чтобы получить то, что я хочу, и заставил программу продолжить.
Чтобы проверить, работает ли я, я использовал «Контроль исходного кода» из «Диспетчера задач» и посмотрел на свое приложение на C #. Оттуда я увидел TCP-соединение, которое подключалось не к моему первому серверу, а ко второму серверу, что было именно тем, что я хотел.
Но после просмотра обоих серверов я не увидел входящих соединений.
Через некоторое время соединение с «Source Control» пропало, там, где также пока не отправляются пакеты.
Как случилось, что мое соединение не началось? Я что-то упустил из виду?