Make tcp server: различия между версиями
Перейти к навигации
Перейти к поиску
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE:make_tcp_server}} | {{DISPLAYTITLE:make_tcp_server}} | ||
{{function_begin |template <class traits_t, class alloc_t> | {{function_begin|template <class traits_t, class alloc_t> | ||
InternetConnectionEndPointOwn make_tcp_server(const std::basic_string<char, traits_t, alloc_t>& strClientAddress, std::uint16_t nPortLE); //1 | |||
InternetConnectionEndPointOwn make_tcp_server( | InternetConnectionEndPointOwn make_tcp_server(const char* pszClientAddress, std::uint16_t nPortLE); //2 | ||
InternetConnectionEndPointOwn make_tcp_server( | InternetConnectionEndPointOwn make_tcp_server(const char* pClientAddress, std::size_t cchClientAddress, std::uint16_t nPortLE); //3 | ||
InternetConnectionEndPointOwn make_tcp_server(std::uint32_t nClientAddressLE, std::uint16_t nPortLE); // | InternetConnectionEndPointOwn make_tcp_server(const ip4_address_t& ip4Client, std::uint16_t nPortLE); //4 | ||
InternetConnectionEndPointOwn make_tcp_server( | InternetConnectionEndPointOwn make_tcp_server(std::uint32_t nClientAddressLE, std::uint16_t nPortLE); //5 | ||
InternetConnectionEndPointOwn make_tcp_server(std::uint16_t nPortLE); // | InternetConnectionEndPointOwn make_tcp_server(const ip6_address_t& ip6Client, std::uint16_t nPortLE); //6 | ||
InternetConnectionEndPointOwn make_tcp_server(const std::uint8_t* pClientAddressLE, std::uint32_t nScope, std::uint16_t nPortLE); //7 | |||
InternetConnectionEndPointOwn make_tcp_server(std::uint16_t nPortLE); //8|{{make_tcp_server brief}} | |||
# Создает сервер, который впоследствии будет принимать запросы на соединение от клиента, адрес которого задается строкой [https://en.cppreference.com/w/cpp/string/basic_string std::basic_string]. | |||
# Адрес клиента задается C-строкой, завершающейся терминальным нулем. | |||
# Адрес клиента задается строкой байт заданной длины и без терминального нуля. | |||
# Адрес клиента задается IPv4 адресом, заданным с помощью структуры [[ip4_address_t]]. | |||
# Адрес клиента задается IPv4 адресом, заданным четырехбайтовым целым в формате Little-Endian. Данная перегрузка менее предпочтительна по сравнению с более удобной в использовании связкой функции [[make_ip4_address]] и перегрузки 4, что реализует автоматическое форматирование и статический контроль типа адреса. | |||
# Адрес клиента задается IPv6 адресом, заданным с помощью структуры [[ip6_address_t]]. | |||
# Адрес клиента задается IPv6 адресом, заданным указателем на буфер из шестнадцати байт в формате Little-Endian. Данная перегрузка менее предпочтительна по сравнению с более удобной в использовании связкой функции [[make_ip6_address]] и перегрузки 6, что реализует автоматическое форматирование и статический контроль типа адреса. | |||
# Создает сервер, который будет удовлетворять запросы на соединение от любых клиентов. | |||
}} | |||
{{function_paramlist begin}} | {{function_paramlist begin}} | ||
{{function_paramlist add|strClientAddress| | {{function_paramlist add|strClientAddress|Строка [https://en.cppreference.com/w/cpp/string/basic_string std::basic_string] с адресом клиента, запросы на соединения от которых будут удовлетворены сервером.}} | ||
{{function_paramlist add|pClientAddress| |paramdir=[in]}} | {{function_paramlist add|pszClientAddress|C-строка с терминальным нулем, содержащая адрес ожидаемого клиента.|paramdir=[in]}} | ||
{{function_paramlist add| | {{function_paramlist add|pClientAddress|Строка с адресом клиента, длина которой задается параметром {{param|cchClientAddress}}.|paramdir=[in]}} | ||
{{function_paramlist add|nClientAddressLE| | {{function_paramlist add|cchClientAddress|Длина строки {{param|pClientAddress}} в байтах.}} | ||
{{function_paramlist add| | {{function_paramlist add|ip4Client|Ссылка на структуру [[ip4_address_t]] с IPv4 адресом ожидаемого клиента.}} | ||
{{function_paramlist add| | {{function_paramlist add|nClientAddressLE|Четырехбайтовое целое, задающее в Little-Endian формате IPv4 адрес ожидаемого клиента. Вместо вызова перегрузки 5 предпочтительно использование перегрузки 4 и вспомогательной функции [[make_ip4_address]]. При таком создании соединения осуществляется контроль форматирования IPv4 адреса, заданного побайтово, со статическим контролем типа адреса.}} | ||
{{function_paramlist add|nPortLE|16-битовый порт | {{function_paramlist add|ip6|Ссылка на структуру [[ip6_address_t]] с IPv6 адресом ожидаемого клиента.}} | ||
{{function_paramlist add|pClientAddressLE|Шестнадцатибайтовое целое, задающее в Little-Endian формате IPv4 адрес ожидаемого клиента. Вместо вызова перегрузки 7 предпочтительно использование перегрузки 6 и вспомогательной функции [[make_ip6_address]]. При таком создании соединения осуществляется контроль форматирования IPv6 адреса, заданного покомпонентно, со статическим контролем типа адреса.|paramdir=[in]}} | |||
{{function_paramlist add|nScope|Контекст IPv6.}} | |||
{{function_paramlist add|nPortLE|16-битовый порт, который должен быть прослушиваем сервером на предмет TCP подключений. Порт задается в Little-Endian формате.}} | |||
{{function_paramlist end}} | {{function_paramlist end}} | ||
{{function_return_value|Объект [[InternetConnectionEndPointOwn]].}} | {{function_return_value|Объект [[InternetConnectionEndPointOwn]], реализующий точку доступа, которая будет прослушиваться сервером на предмет подключений со стороны клиента.}} | ||
{{function_sa_begin}} | {{function_sa_begin}} | ||
{{function_sa_add|[[CreateTCPServer]]}} | {{function_sa_add|[[CreateTCPServer]]|{{CreateTCPServer brief}}}} | ||
{{function_sa_add|[[make_tcp_client]]}} | {{function_sa_add|[[make_tcp_client]]|{{make_tcp_client brief}}}} | ||
{{function_sa_add|[[ | {{function_sa_add|[[make_multipoint_tcp_server]]|{{make_multipoint_tcp_server brief}}}} | ||
{{function_sa_add|[[make_ip4_address]]|{{make_ip4_address brief}}}} | |||
{{function_sa_add|[[make_ip6_address]]|{{make_ip6_address brief}}}} | |||
{{function_sa_end}} | {{function_sa_end}} | ||
{{function_end}} | {{function_end}} | ||
Вызов функции не переводит сервер в состояние прослушивания порта и не блокирует вызывающий поток выполнения до тех пор, пока сервер не осуществит первое чтение или запись с использованием потоков, соответственно, чтения и записи, которые для точки доступа <source lang="cpp" inline>InternetConnectionEndPointOwn cp = make_tcp_server(/*...*/);</source> получены вызовами <source lang="cpp" inline>cp.get_connection_handler().read();</source> и <source lang="cpp" inline>cp.get_connection_handler().write();</source> (или аналогичными). |
Текущая версия на 13:07, 20 августа 2019
template <class traits_t, class alloc_t>
InternetConnectionEndPointOwn make_tcp_server(const std::basic_string<char, traits_t, alloc_t>& strClientAddress, std::uint16_t nPortLE); //1
InternetConnectionEndPointOwn make_tcp_server(const char* pszClientAddress, std::uint16_t nPortLE); //2
InternetConnectionEndPointOwn make_tcp_server(const char* pClientAddress, std::size_t cchClientAddress, std::uint16_t nPortLE); //3
InternetConnectionEndPointOwn make_tcp_server(const ip4_address_t& ip4Client, std::uint16_t nPortLE); //4
InternetConnectionEndPointOwn make_tcp_server(std::uint32_t nClientAddressLE, std::uint16_t nPortLE); //5
InternetConnectionEndPointOwn make_tcp_server(const ip6_address_t& ip6Client, std::uint16_t nPortLE); //6
InternetConnectionEndPointOwn make_tcp_server(const std::uint8_t* pClientAddressLE, std::uint32_t nScope, std::uint16_t nPortLE); //7
InternetConnectionEndPointOwn make_tcp_server(std::uint16_t nPortLE); //8
Создает серверную точку-доступа.
- Создает сервер, который впоследствии будет принимать запросы на соединение от клиента, адрес которого задается строкой std::basic_string.
- Адрес клиента задается C-строкой, завершающейся терминальным нулем.
- Адрес клиента задается строкой байт заданной длины и без терминального нуля.
- Адрес клиента задается IPv4 адресом, заданным с помощью структуры ip4_address_t.
- Адрес клиента задается IPv4 адресом, заданным четырехбайтовым целым в формате Little-Endian. Данная перегрузка менее предпочтительна по сравнению с более удобной в использовании связкой функции make_ip4_address и перегрузки 4, что реализует автоматическое форматирование и статический контроль типа адреса.
- Адрес клиента задается IPv6 адресом, заданным с помощью структуры ip6_address_t.
- Адрес клиента задается IPv6 адресом, заданным указателем на буфер из шестнадцати байт в формате Little-Endian. Данная перегрузка менее предпочтительна по сравнению с более удобной в использовании связкой функции make_ip6_address и перегрузки 6, что реализует автоматическое форматирование и статический контроль типа адреса.
- Создает сервер, который будет удовлетворять запросы на соединение от любых клиентов.
- Параметры
strClientAddress Строка std::basic_string с адресом клиента, запросы на соединения от которых будут удовлетворены сервером. [in] pszClientAddress C-строка с терминальным нулем, содержащая адрес ожидаемого клиента. [in] pClientAddress Строка с адресом клиента, длина которой задается параметром cchClientAddress. cchClientAddress Длина строки pClientAddress в байтах. ip4Client Ссылка на структуру ip4_address_t с IPv4 адресом ожидаемого клиента. nClientAddressLE Четырехбайтовое целое, задающее в Little-Endian формате IPv4 адрес ожидаемого клиента. Вместо вызова перегрузки 5 предпочтительно использование перегрузки 4 и вспомогательной функции make_ip4_address. При таком создании соединения осуществляется контроль форматирования IPv4 адреса, заданного побайтово, со статическим контролем типа адреса. ip6 Ссылка на структуру ip6_address_t с IPv6 адресом ожидаемого клиента. [in] pClientAddressLE Шестнадцатибайтовое целое, задающее в Little-Endian формате IPv4 адрес ожидаемого клиента. Вместо вызова перегрузки 7 предпочтительно использование перегрузки 6 и вспомогательной функции make_ip6_address. При таком создании соединения осуществляется контроль форматирования IPv6 адреса, заданного покомпонентно, со статическим контролем типа адреса. nScope Контекст IPv6. nPortLE 16-битовый порт, который должен быть прослушиваем сервером на предмет TCP подключений. Порт задается в Little-Endian формате. - Возвращаемое значение:
- Объект InternetConnectionEndPointOwn, реализующий точку доступа, которая будет прослушиваться сервером на предмет подключений со стороны клиента.
- См. также
CreateTCPServer Создает TCP-сервер с интерфейсом IInternetConnectionEndPoint. make_tcp_client Создает клиентскую точку-доступа и его соединение с сервером. make_multipoint_tcp_server Создает серверную точку-доступа с заданным параметрически размером очереди TCP подключений. make_ip4_address Форматирует заданные параметрически четыре байта адреса IPv4 и создает на их основе адрес в формате ip4_address_t. make_ip6_address Форматирует заданные параметрически 16-битные компоненты адреса IPv6 и создает на их основе адрес в формате ip6_address_t.
Вызов функции не переводит сервер в состояние прослушивания порта и не блокирует вызывающий поток выполнения до тех пор, пока сервер не осуществит первое чтение или запись с использованием потоков, соответственно, чтения и записи, которые для точки доступа InternetConnectionEndPointOwn cp = make_tcp_server(/*...*/);
получены вызовами cp.get_connection_handler().read();
и cp.get_connection_handler().write();
(или аналогичными).