2015-10-07 5 views
0

У меня есть клиентское/TCP-приложение TCP, и мне нужно изменить IP-адрес клиента. Если я открою клиентское приложение, он установит соединение с сервером (внутри клиента определяется IP-адрес сервера - .exe-файл). Есть ли способ определить IP-адрес, который я хочу подключить? Я сделал это один раз с программой переадресации портов, но это немного сложно, и пользователи тоже должны использовать эту программу, если они хотят подключиться. Может быть, каким-то образом клиент получит информацию о том, что он подключен к правильному IP-адресу, но он будет подключаться к другим, некоторые из которых он не определил внутри приложения.Изменить IP-адрес программы

Но, возможно, это просто невозможно: D. Сначала извините за мой английский. Надеюсь, вы поймете это, если не сообщите мне, и я попытаюсь объяснить это немного больше. Спасибо за любой совет.

+0

у меня нет исходного кода приложения. Или как ты это сделал? U означает заданные параметры в файле hosts? – Koi

+0

Да, это приложение сделано в MMF и C++, но не сделано мной. И у меня нет исходного кода, у меня есть только файл .exe клиента и сервера. Надеюсь, теперь это ясно. – Koi

+0

Это звучит как [проблема XY] (http://meta.stackexchange.com/a/66378/167586). В чем проблема, которая, по вашему мнению, будет решена точно? –

ответ

0

Если вы знаете имя хоста, которое закодировано в приложении (если оно по имени хоста), вы можете написать/переписать запись в файле hosts.

Возможно, вы могли найти это с помощью эфирного или прохожего (или другого анализатора пакетов).

Если у вас есть клиентские и серверные приложения, Im удивил, что нет файла конфигурации или настроек, которые позволяют вам изменить это. Если это файл конфигурации, вы можете переписать эту запись ...

+0

Так что мне нужно будет сделать это на каждом ПК, где будет клиент, не так ли? Только для записи серверное приложение будет на VPS. Но это неактуальная информация, я думаю. – Koi

+0

Если есть файл конфигурации, вы можете предварительно заполнить его соответствующим ip, или когда ваши пользователи захватят эту пару exe, вы можете дать им скрипт, который устанавливает его. –

+0

Нет конфигурационного файла. Существует только один файл exe (для клиента). Возможно ли сделать новый exe-файл, возможно, в C# или что-то, что будет содержать этот exe-файл и скрипт, что будет переписывать файл hosts? Или как вы думаете, «когда пользователи захватывают exe»? – Koi

0

Самый простой способ справиться с этим - сотрудничество между клиентом и сервером. Просто попросите клиента сообщить IP-адрес, который он хочет использовать на сервере, и заставить сервер действовать так, как если бы соединение возникло с этого IP-адреса. Этот метод используется HTTP proxies, и аналогичный метод используется для SMTP (электронная почта).

Поскольку у вас нет исходного кода для сервера или клиента, потребуется дополнительная работа.

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

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

Так поток:

  1. Кто-то с помощью компьютера-клиента запускает клиентский исполняемый файл, который является исполняемым вы должны сделать.

  2. Ваш исполняемый файл подключается к серверному приложению, которое вы должны сделать, и сообщает ему IP-адрес, из которого он должен прибыть.

  3. В своем приложении для сервера указывается реальный IP-адрес источника и тот, который клиент сообщил ему.

  4. Ваше клиентское приложение запускает обычный исполняемый файл клиента, он подключается к серверу.

  5. Ваш код на сервере перехватывает код исполняемого файла сервера, чтобы принять это соединение и заменяет IP-адрес источника вы сохраненную в шаге 3.

+0

Разве это не просто для Интернета? Мне это нужно для приложений .exe. – Koi

+0

@Koi No. Этот метод используется HTTP, SMTP и даже многими прокси-серверами. Даже если до сих пор он использовался только в Интернете, что мешает вам использовать его в любых целях? Вы можете использовать [generic proxy protocol] (http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-proxy-protocol.html#proxy-protocol), который использует Amazon. –

+0

Это выглядит немного для меня: D:/Может быть, вы могли бы мне помочь? – Koi

Смежные вопросы