2013-07-14 3 views
0

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

EDIT:

нормально, код интереса выглядит следующим образом:

сервера:

сервера Dim Как TcpListener = Новый TcpListener (IPAddress.Any, порт)

в client:

Dim theip As IPAddress = IPAddress.Parse (TextBox1.Text) client = Новый TcpClient (theip.ToString, порт)

Теперь, что я должен вводить в «TextBox1.Text», если у меня есть клиент на удаленном компьютере (подключен через Интернет) и сервер на другом компьютере (чей внешний IP-адрес известен)? Могу ли я ввести внешний IP-адрес машины, на которой запущен сервер, прямо в текстовом поле? Кроме того, мне нужно позаботиться о таких вещах, как «переадресация портов»/«позволить межсетевому экрану разрешить соединение» и все такое? Если да, можете ли вы направить меня или связать учебное пособие, чтобы мое приложение выполняло это автоматически или существует альтернативный подход к достижению этого, и поэтому пересылка порта не требуется? Большое спасибо!

+0

Если вы подключаетесь через Интернет, пересылка портов должна быть обязательной, как и для всех сетевых подключений, поэтому соответствующий компьютер отвечает на соответствующий порт. При подключении по локальной сети вам просто нужно разрешить исходящий вызов на клиентском и входящем соединениях на сервере на брандмауэре. Невозможно настроить эту программу, это полностью за пределами ответственности вашего приложения за это. Вы должны предоставить четкую документацию или рекомендации для пользователя для выполнения этих действий на обоих ПК. Кнопка «тестовое соединение» может помочь устранить неполадки. – Alejandro

+0

спасибо за помощь Alejandro !, у меня вопрос, хотя - как работает приложение, такое как utorrent и teamviewer? Они никогда не просят пользователя пересылать порт ... – Mohit

+0

Teamviewer выполняет только исходящие соединения с обеих сторон, и их сервер управляет соединением, поэтому им не требуется переадресация портов (но ДОЛЖНЫ УСТРАНЕНИЯ БУДУЩЕГО ОТВЕТА на порт, который он использует). UTorrent ** действительно нуждается в переадресации портов на вашей стороне, и он предлагает тест для этого, поскольку он является протоколом одноранговой сети, он слушает соединения для посева, и, хотя он может работать без него, он просто позволяет загружать, делая Bittorrent inneficient. Единственное, что я думаю, что вы можете сделать, чтобы избежать перенаправления портов у пользователей, - это самостоятельно разместить часть сервера. – Alejandro

ответ

0

Вы говорите, что у другой машины есть внешний адрес. Это подразумевает, что он также имеет местный адрес; т.е. он находится за брандмауэром NAT или аналогичным. В этом случае вам необходимо настроить брандмауэр, чтобы обеспечить связь, например, путем настройки перенаправления портов. Такие приложения, как MSN Messenger, клиенты VOIP и т. Д., Разрабатывают механизмы для автоматического согласования, но они часто не очень успешны.

+0

Я отредактировал вопрос buddy, есть ли альтернативный подход, который не требует перенаправления портов? Как мне продолжать? Благодаря! – Mohit

+0

То, что вы пытаетесь сделать - подключиться через брандмауэр извне внутрь, - это именно то, что брандмауэр предназначен для предотвращения. Так что это непросто. AFAIK MSN и т. Д. Могут обойти это до некоторой степени, имея сервер, с которым оба клиента могут совершать * исходящие * подключения, по крайней мере, изначально. Именно то, что требуется, также зависит от типа используемого брандмауэра, и эти приложения имеют определенную способность идентифицировать тип брандмауэра и множество стратегий для прохождения. Но если вы когда-либо пытались настроить клиентов VOIP и т. Д., Вы узнаете, что они все еще попали и пропустили. – peterG

+0

все, что мне нужно знать, - нормальный пользователь создает приложение в vb, которое является законным, а два экземпляра которого при запуске на двух разных удаленных компьютерах позволяют свободно общаться друг с другом? Если вы хотите достичь этого, как мне следует продолжить? – Mohit

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