Member 14934537 Ответов: 1

Связь между клиентами и сервером в разных сетях на языке Си#


У меня есть проект, в котором сервер будет взаимодействовать с мультиклиентами. Программа работает нормально, когда сервер и клиенты соединяются в одной сети (один и тот же ip-адрес и один и тот же порт). Однако мне нужно менять ip-адрес своего сервера каждый раз, когда я переезжаю в другое место. Есть ли какой-нибудь возможный способ, чтобы сервер и клиент всегда были подключены, даже если они находятся в разных сетях? Должен ли я изменить ip-адрес сервера на статический и как это сделать программно? Любой пример и руководство могут быть оценены по достоинству.

Спасибо

Что я уже пробовал:

Я попробовал этот код, чтобы изменить свой статический ip-адрес sever, но мне все равно придется изменить свой код, если я перееду в другое место.

private void setIP(string ip_address)
{
  ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
   ManagementObjectCollection objMOC = objMC.GetInstances();

   foreach (ManagementObject objMO in objMOC)
   {
     if((bool)objMO["IPEnabled"])
     {
      try
      {
         ManagementBaseObject setIP;
         ManagementBaseObject newIP = objMO.GetMethodParameters("EnableStatic");
         newIP["IPAddress"] = new IPAddress[] { IPAddress.Parse(ip_address) };
        setIP = objMO.InvokeMethod("EnableStatic", newIP, null);
     }
      catch (Exception ex)
      {
      }                      
    }
  }
}

Richard MacCutchan

IP-адреса контролируются сетевым провайдером. Поговорите с ними о выделении статического адреса.

1 Ответов

Рейтинг:
6

Chris Copeland

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

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

На самом деле, если этот сервер находится в разработке в данный момент и в конечном итоге будет готов к производственному использованию, вы, вероятно, развернете его на поставщике услуг (AWS, Azure и т. д.), который предоставляет статические точки доступа.


Member 14934537

Спасибо за решение. Клиент и сервер могут подключаться в разных сетях только в том случае, если есть новый DNS, предоставленный поставщиком услуг?

Chris Copeland

Это было бы оптимальным решением, если ваш сервер будет перемещаться и переключать сети. Если вы загуглите "динамический dns", то найдете несколько рекомендаций. Я видел другое решение, включающее настройку VPN на вашем маршрутизаторе, но если вы переключаете сети, то это, вероятно, не соответствует цели.