Как заставить файл .cpp действовать как доступный сервер

Я написал простую программу с Linux (Cent OS 7.0) и C ++. Это очень маленький сервер, который отправляет клиенту строку символов. Но моя проблема в том, что я не знаю, как мне получить доступ к этому серверу, используя IP-адрес?

Я использовал Linux Socket Interface (Беркли), и в разделе, который определяет адрес, мой код выполняет следующее:

    serverObject.
sin_family = AF_INET;
serverObject.sin_addr.
s_addr = htonl(INADDR_ANY);
serverObject.
sin_port = htonl(portNumber);

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

/* Address to accept any incoming messages.  */

Теперь, как мне запустить сервер, а затем использовать мою простую клиентскую программу для отправки запроса на него. Моя простая клиентская программа принимает IP-адрес в качестве адреса назначения, этот адрес должен быть направлен на сервер. Как я должен связать это тогда?

-1

Решение

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

Итак, как только вы укажете INADDR_ANYВам необходимо инициировать соединения в соответствии со следующими правилами:

  1. Если вы подключаетесь с одной и той же физической машины, проще всего было бы использовать интерфейс обратной связи (127.0.0.1). Тем не менее, вы все еще можете сделать (2).
  2. Если вы подключаетесь с другого компьютера, вам нужно выбрать доступный IP-адрес вашего сервера. с этой машины. Как сказано выше, если ваш сервер подключен только к одной сети, это будет просто IP-адрес сервера. Во внутренней сети это часто будет что-то вроде 192.168.x.y или 10.0.x.y, но это не обязательно.
  3. Если вы подключаетесь из другой сети, которая использует шлюз для доступа к вашему серверу, вам необходимо настроить переадресацию портов в соответствующих маршрутизаторах, чтобы при получении соединения с портом X они знали, как внутренне передать его на ваш сервер. сервер.
2

Другие решения

Как программист сервера, вы решаете порт для прослушивания, но не адрес.

Интернет-адрес предоставляется вашим интернет-провайдером, или 127.0.0.1 для тестирования на вашем компьютере.

В Интернете существует множество веб-страниц, на которых представлены инструменты, позволяющие узнать ваш текущий публичный адрес (поиск «Что такое мой Ip»).

Большинство «домашних» интернет-маршрутизаторов реализуют NAT: они имеют один интернет-адрес и сопоставляют их со многими устройствами, которые несут номер порта, который необходимо изменить (ваш порт 80 становится портом (например, 2345) для внешней сети. Чтобы разрешить клиенту из вашего дома доступ к вашему серверу, вам необходимо настроить маршрутизатор для сопоставления порта сервера, например, ваш общедоступный порт 80 сопоставляется с портом 80 вашего сервера.

С учетом вышесказанного вы сможете подключить своего клиента к серверу через адрес и порт.

Если затем вы хотите использовать имя (example.org) вместо IP (93.184.216.34), используется сервер доменных имен. Но это другая тема.

1