Доступ к серверу на TCP/IP по статическому IP

Рейтинг: 0Ответов: 2Опубликовано: 25.03.2015

Всем доброй ночи!

Разрабатываю клиент-серверное приложение на C#, где посредством TCP протокола необходимо передать данные серверу, а затем получить ответ. Сервер - обычное консольное приложение, запускающееся на компе с Windows 7. Не секрет, что, используя TCP протокол, клиенту необходимо знать IP адрес сервера.

У меня есть две машины (клиент, сервер), находятся они рядом друг с другом, оба подключены к интернету. Собственно, если каждый раз запускать клиент и сервер после переподключения к интернету, то IP сервера будет изменяться, собственно как и IP клиента. Как сделать так, чтобы клиент как-то автоматически определял IP сервера и коннектился к нему? То есть каждый раз просить пользователя в клиенте ручками ввести айпишник сервера - не вариант.

Копаю в сторону Dns. Насколько я понимаю, если поднять каким-то образом свой dns сервер и преобразовывать хост, заданный в клиенте, в IP, то все будет так как нужно? Или я вообще не в ту сторону смотрю? Подскажите ваши идеи. Спасибо, друзья. )

Ответы

▲ 1

Вместо DNS можно поиграться и с широковещательным UDP. Сервер рассылает раз в минуту свой IP. Клиент после запуска проверяет прошлый адрес и если там пусто - ждёт уведомления на определённом порту. Не скажу, чтобы прям универсальное решение, и минусы есть, но может и подойдёт.

▲ 1

Алгоритм:

1-й компьютер (server)

-Получает IP (например - checkip.dyndns.org)

-Отсылает IP на почту

http://csharp.net-informations.com/communications/csharp-email-attachment.htm

2-й компьютер (client)

-Получает IP по почте

-Вставляет IP в conf-файл программы

Для получения IP по почте, можно использовать расширяемую библиотеку, например ImapX

https://imapx.codeplex.com/