Я написал простую программу с 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-адрес в качестве адреса назначения, этот адрес должен быть направлен на сервер. Как я должен связать это тогда?
INADDR_ANY
указывает, что все активные сетевые интерфейсы в системе должны быть связаны. Поэтому, если вы подключены к нескольким сетям, вы сможете обмениваться данными с подключениями, поступающими из всех них. Большинство систем, как правило, имеют только одну, и это все равно говорит о том, что если IP-адрес, связанный с этим интерфейсом, изменится, вы все равно будете связываться с этим интерфейсом.
Итак, как только вы укажете INADDR_ANY
Вам необходимо инициировать соединения в соответствии со следующими правилами:
Как программист сервера, вы решаете порт для прослушивания, но не адрес.
Интернет-адрес предоставляется вашим интернет-провайдером, или 127.0.0.1 для тестирования на вашем компьютере.
В Интернете существует множество веб-страниц, на которых представлены инструменты, позволяющие узнать ваш текущий публичный адрес (поиск «Что такое мой Ip»).
Большинство «домашних» интернет-маршрутизаторов реализуют NAT: они имеют один интернет-адрес и сопоставляют их со многими устройствами, которые несут номер порта, который необходимо изменить (ваш порт 80 становится портом (например, 2345) для внешней сети. Чтобы разрешить клиенту из вашего дома доступ к вашему серверу, вам необходимо настроить маршрутизатор для сопоставления порта сервера, например, ваш общедоступный порт 80 сопоставляется с портом 80 вашего сервера.
С учетом вышесказанного вы сможете подключить своего клиента к серверу через адрес и порт.
Если затем вы хотите использовать имя (example.org) вместо IP (93.184.216.34), используется сервер доменных имен. Но это другая тема.