Я переписываю скриптовый сервер python в C++ с помощью asio. Я настроил следующие примеры изСпецификация порта в клиентском приложении asio tcp
http://www.boost.org/doc/libs/1_39_0/doc/html/boost_asio/tutorial.html:
Daytime.1 - Синхронный TCP DAYTIME клиенту
Daytime.3 - асинхронная TCP сервера день
и кажется, что они будут работать правильно. Однако меня озадачивает то, что когда я создал скрученный сервер, он и клиентская сторона нуждались в явной спецификации IP-адресов и номеров портов. У меня есть несколько иной опыт:
- В клиентском приложении не требуется спецификация номера порта. Я могу успешно подключиться к серверу, используя только 127.0.0.1 в качестве аргумента командной строки.
- Также я могу подключиться к одному и тому же серверу с любым юридическим вариантом этого IP-адреса, если первый байт составляет 127 (например, 127.1.2.3 подключается).
- В клиентском коде есть буквальная буква, указывающая на соединение с использованием того, что, как я полагаю, является предоставленной ОС «дневной» службой TCP. Однако в коде сервера нет ссылки на это. Почему я должен указать конкретную услугу для подключения? Я также подозреваю, что эта услуга может быть связана с поведением в точках 1 и 2.
Теперь я знаю, что на сервере есть приемник-приемник-приемник, который устанавливает соединение только после получения запроса, но мне бы хотелось, чтобы некоторые подробнее здесь.
спасибо. Таким образом, я могу удалить дневной литерал и подключиться явно? Также у вас есть идея относительно пункта 2? –
AFAIK 127.x.x.x - это loopback, и по умолчанию адрес привязан ко всем интерфейсам. – Arunmu