Make tcp client: различия между версиями

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
 
(не показано 5 промежуточных версий этого же участника)
Строка 1: Строка 1:
{{DISPLAYTITLE:make_tcp_client}}
{{DISPLAYTITLE:make_tcp_client}}
{{function_begin |template <class traits_t, class alloc_t>
{{function_begin |template <class traits_t, class alloc_t>
  InternetConnectionEndPointOwn make_tcp_client(const std::basic_string<char, traits_t, alloc_t>& strServerAddress, std::uint16_t nPortLE); //1
InternetConnectionEndPointOwn make_tcp_client(const std::basic_string<char, traits_t, alloc_t>& strServerAddress, std::uint16_t nPortLE); //1
inline InternetConnectionEndPointOwn make_tcp_client(_In_z_ const char* pszServerAddress, std::uint16_t nPortLE); //2
InternetConnectionEndPointOwn make_tcp_client(const char* pszServerAddress, std::uint16_t nPortLE); //2
inline InternetConnectionEndPointOwn make_tcp_client(_In_count_(cchServerAddress) const char* pServerAddress, std::size_t cchServerAddress, std::uint16_t nPortLE); //3  
InternetConnectionEndPointOwn make_tcp_client(const char* pServerAddress, std::size_t cchServerAddress, std::uint16_t nPortLE); //3
inline InternetConnectionEndPointOwn make_tcp_client(std::uint32_t nServerAddressLE, std::uint16_t nPortLE); //4
InternetConnectionEndPointOwn make_tcp_client(const ip4_address_t& ip4Server, std::uint16_t nPortLE); //4
inline InternetConnectionEndPointOwn make_tcp_client(_In_bytecount_c_(16) const std::uint8_t* pServerAddressLE, std::uint32_t nScopeLE, std::uint16_t nPortLE); //5|{{make_tcp_client brief}}}}
InternetConnectionEndPointOwn make_tcp_client(std::uint32_t nServerAddressLE, std::uint16_t nPortLE); //5
InternetConnectionEndPointOwn make_tcp_client(const ip6_address_t& ip6Server, std::uint16_t nPortLE); //6
InternetConnectionEndPointOwn make_tcp_client(const std::uint8_t* pServerAddressLE, std::uint32_t nScope, std::uint16_t nPortLE); //7|{{make_tcp_client 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|strServerAddress|Адрес сервера, к которому необходимо подключиться.|paramdir=[in]}}
{{function_paramlist add|strServerAddress|Строка [https://en.cppreference.com/w/cpp/string/basic_string std::basic_string] с адресом сервера, к которому необходимо подключиться.}}
{{function_paramlist add|pszServerAddress| |paramdir=[in]}}
{{function_paramlist add|pszServerAddress|C-строка с терминальным нулем, содержащая адрес сервера.|paramdir=[in]}}
{{function_paramlist add|pServerAddress| |paramdir=[in]}}
{{function_paramlist add|pServerAddress|Строка с адресом сервера. Длина строки задается параметром {{param|cchServerAddress}}.|paramdir=[in]}}
{{function_paramlist add|nServerAddressLE| |paramdir=[in]}}
{{function_paramlist add|cchServerAddress|Длина строки {{param|pServerAddress}} в байтах.}}
{{function_paramlist add|pServerAddressLE| |paramdir=[in]}}
{{function_paramlist add|ip4Server|Ссылка на структуру [[ip4_address_t]] с IPv4 адресом сервера.}}
{{function_paramlist add|cchServerAddress| Длина адреса. |paramdir=[in]}}
{{function_paramlist add|nServerAddressLE|Четырехбайтовое целое, задающее в Little-Endian формате IPv4 адрес удаленного сервера. Вместо вызова перегрузки 5 предпочтительно использование перегрузки 4 и вспомогательной функции [[make_ip4_address]]. При таком создании соединения осуществляется контроль форматирования IPv4 адреса, заданного побайтово, со статическим контролем типа адреса.}}
{{function_paramlist add|nPortLE|16-битовый порт в Little-Endian формате.}}
{{function_paramlist add|ip6Server|Ссылка на структуру [[ip6_address_t]] с IPv6 адресом сервера.}}
{{function_paramlist add|nScopeLE|Контекст IPv6.}}
{{function_paramlist add|pServerAddressLE|Шестнадцатибайтовое целое, задающее в Little-Endian формате IPv6 адрес удаленного сервера. Вместо вызова перегрузки 7 предпочтительно использование перегрузки 6 и вспомогательной функции [[make_ip6_address]]. При таком создании соединения осуществляется контроль форматирования IPv6 адреса, заданного покомпонентно, со статическим контролем типа адреса.|paramdir=[in]}}
{{function_paramlist add|nPortLE|16-битовый порт сервера в Little-Endian формате.}}
{{function_paramlist add|nScope|Индекс области действия и зоны адреса IPv6.}}
{{function_paramlist end}}
{{function_paramlist end}}
{{function_return_value|Объект [[InternetConnectionEndPointOwn]].}}
{{function_return_value|Объект [[InternetConnectionEndPointOwn]], реализующий точку доступа к серверу.}}
{{function_sa_begin}}
{{function_sa_begin}}
{{function_sa_add|[[CreateTCPClient]]}}
{{function_sa_add|[[CreateTCPClient]]|{{CreateTCPClient brief}}}}
{{function_sa_add|[[make_tcp_server]]}}
{{function_sa_add|[[make_tcp_server]]|{{make_tcp_server brief}}}}
{{function_sa_add|[[make_tcp_node_name]]}}
{{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}}
Вызов функции не блокирует вызывающий поток выполнения: непосредственно TCP соединение, с рукопожатием, осуществляется при первой попытке чтения или записи через клиентскую точку доступа.

Текущая версия на 01:30, 20 августа 2019

template <class traits_t, class alloc_t>
InternetConnectionEndPointOwn make_tcp_client(const std::basic_string<char, traits_t, alloc_t>& strServerAddress, std::uint16_t nPortLE); //1
InternetConnectionEndPointOwn make_tcp_client(const char* pszServerAddress, std::uint16_t nPortLE); //2
InternetConnectionEndPointOwn make_tcp_client(const char* pServerAddress, std::size_t cchServerAddress, std::uint16_t nPortLE); //3
InternetConnectionEndPointOwn make_tcp_client(const ip4_address_t& ip4Server, std::uint16_t nPortLE); //4
InternetConnectionEndPointOwn make_tcp_client(std::uint32_t nServerAddressLE, std::uint16_t nPortLE); //5
InternetConnectionEndPointOwn make_tcp_client(const ip6_address_t& ip6Server, std::uint16_t nPortLE); //6
InternetConnectionEndPointOwn make_tcp_client(const std::uint8_t* pServerAddressLE, std::uint32_t nScope, std::uint16_t nPortLE); //7

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

  1. Адрес задается строкой std::basic_string.
  2. Адрес задается C-строкой, завершающейся терминальным нулем.
  3. Адрес задается строкой байт заданной длины и без терминального нуля.
  4. Адрес задается IPv4 адресом, заданным с помощью структуры ip4_address_t.
  5. Адрес задается IPv4 адресом, заданным четырехбайтовым целым в формате Little-Endian. Данная перегрузка менее предпочтительна по сравнению с более удобной в использовании связкой функции make_ip4_address и перегрузки 4, что реализует автоматическое форматирование и статический контроль типа адреса.
  6. Адрес задается IPv6 адресом, заданным с помощью структуры ip6_address_t.
  7. Адрес задается IPv6 адресом, заданным указателем на буфер из шестнадцати байт в формате Little-Endian. Данная перегрузка менее предпочтительна по сравнению с более удобной в использовании связкой функции make_ip6_address и перегрузки 6, что реализует автоматическое форматирование и статический контроль типа адреса.
Параметры
strServerAddressСтрока std::basic_string с адресом сервера, к которому необходимо подключиться.
[in]pszServerAddressC-строка с терминальным нулем, содержащая адрес сервера.
[in]pServerAddressСтрока с адресом сервера. Длина строки задается параметром cchServerAddress.
cchServerAddressДлина строки pServerAddress в байтах.
ip4ServerСсылка на структуру ip4_address_t с IPv4 адресом сервера.
nServerAddressLEЧетырехбайтовое целое, задающее в Little-Endian формате IPv4 адрес удаленного сервера. Вместо вызова перегрузки 5 предпочтительно использование перегрузки 4 и вспомогательной функции make_ip4_address. При таком создании соединения осуществляется контроль форматирования IPv4 адреса, заданного побайтово, со статическим контролем типа адреса.
ip6ServerСсылка на структуру ip6_address_t с IPv6 адресом сервера.
[in]pServerAddressLEШестнадцатибайтовое целое, задающее в Little-Endian формате IPv6 адрес удаленного сервера. Вместо вызова перегрузки 7 предпочтительно использование перегрузки 6 и вспомогательной функции make_ip6_address. При таком создании соединения осуществляется контроль форматирования IPv6 адреса, заданного покомпонентно, со статическим контролем типа адреса.
nPortLE16-битовый порт сервера в Little-Endian формате.
nScopeИндекс области действия и зоны адреса IPv6.
Возвращаемое значение:
Объект InternetConnectionEndPointOwn, реализующий точку доступа к серверу.
См. также
CreateTCPClientСоздает TCP-клиент с интерфейсом IInternetConnectionEndPoint.
make_tcp_serverСоздает серверную точку-доступа.
make_multipoint_tcp_serverСоздает серверную точку-доступа с заданным параметрически размером очереди TCP подключений.
make_ip4_addressФорматирует заданные параметрически четыре байта адреса IPv4 и создает на их основе адрес в формате ip4_address_t.
make_ip6_addressФорматирует заданные параметрически 16-битные компоненты адреса IPv6 и создает на их основе адрес в формате ip6_address_t.

Вызов функции не блокирует вызывающий поток выполнения: непосредственно TCP соединение, с рукопожатием, осуществляется при первой попытке чтения или записи через клиентскую точку доступа.