第13章 网络 Page744~746 asio核心类 ip::tcp::endPoint

2. ip::tcp::endpoint

ip::tcp::socket用于连接TCP服务端的 async_connect()方法的第一个入参是
const endpoint_type& peer_endpoint. 此处的类型 endpoint_type 是 ip::tcp::endpoint 在

在 ip::tcp::socket 类内部的一个别名。

libucurl 库采用字符串URL表达目标的地址,如:"http://www.sina.com.cn"。其中"www.sina.com.cn"代表主机在互联网中的位置。采用的是方便人类阅读、理解和记忆的字符串内容。实际访问前需要转换成形如IP地址(V4或V6版本)。示例地址没有给出端口号,但协议http约定了默认端口是80.
asio主要用于处理传输层的TCP, UDP等通信协议,这两个协议对目标地址的要求都是"主机地址 + 端口号"。其中主机地址采用IP(V4或V6)形式。

ip::tcp::endpoint类用于表达"主机地址(IP形式) + 端口号"的组合。

对应的成员方法是 address() 和 port().

以下结构用于示意:

cpp 复制代码
struct endpoint //端地址
{
	address address() const; //取地址
	void address(address const& address); //设置第七
	unsigned short int port() const; ///取端口号
	void port(unsigned short int port); //设置端口号
};

类型名和方法名重名

取值方法和设置方法重名

boost::asio::ip::address.

address类全名是boost::asio::ip::address.

注意它归属在ip之下,这意味这它通用于TCP和UDP.

address类提供静态成员函数from_string()

和普通成员函数to_string()。二者实现IP地址的内部表达和IPV4或IPV6的字符串格式间的转换

cpp 复制代码
boost::asio::ip::address adr;
adr = boost::asio::ip::address::from_string("60.215.128.246");
cout << adr.to_string() << endl;

有address,在加上端口号,可以拼出新浪网服务在传输层上的地址

cpp 复制代码
......
boost::asio::ip::tcp::endpoint sina_endpoint;
sina_endpoint.address(adr);
sina_endpoint.port(80);

然后就可以用ip::tcp::socket主动连接新浪的服务器。

连接新浪示意代码:

相关推荐
Henry Zhu1233 小时前
C++17 `weak_from_this` 详解:让对象安全地观察自己
c++
June`6 小时前
warp shuffle指令
c++·人工智能·算法·cuda
乱七八糟的屋子6 小时前
【C++数值计算】NumCpp超详细入门教程(纯正Numpy语法、零学习成本、C++首选科学计算库、性能压测对比)
c++·数值计算·numpy·高性能计算·科学计算·ndarray
choumin6 小时前
C程序能调用extern “C“声明的带默认参数的C++函数吗?
c语言·c++·extern c·默认参数
AmyLin_20016 小时前
PDF 色彩保真工程实践【3】上手实践:工程结构、依赖集成与一键构建运行
c++·visualstudio·pdf·zlib·vcpkg·libtiff·cmyk
并不喜欢吃鱼7 小时前
从零开始 C++------ 十六.深度拆解 C++ 智能指针:unique_ptr/shared_ptr/weak_ptr 底层模拟、内存泄漏根治
开发语言·c++
不相心 -w-7 小时前
Cmake的基础用法
linux·开发语言·c++
撑伞的鱼99377 小时前
C++开发用什么AI编程工具效果好?2026年实测横评(附选型指南)
开发语言·c++·ai编程·cursor
j7~8 小时前
【Linux】二十八.线程篇五《Linux多线程编程:线程同步之条件变量》---详解
linux·运维·c++·学习·条件变量·线程同步
王老师青少年编程8 小时前
2026年全国青少年信息素养大赛算法应用主题赛C++赛项【决赛】模拟卷3:文末附答案
c++·答案·模拟题·2026年·青少年信息素养大赛·算法应用主题赛·决赛