当前位置: 首页 > news >正文

网站程序安装效果好网站建设哪家便宜

网站程序安装,效果好网站建设哪家便宜,关于网站开发书籍,上海做网站报价socket的创建和连接 tcp客户端创建端点tcp服务端创建端点创建socket创建TCP 服务器端的 acceptor 套接字创建 acceptor 套接字并绑定客户端连接到服务器通过ip地址解析通过域名解析 服务端接收新连接 tcp客户端创建端点 int client_end_point() {std::string raw_ip_address … socket的创建和连接 tcp客户端创建端点tcp服务端创建端点创建socket创建TCP 服务器端的 acceptor 套接字创建 acceptor 套接字并绑定客户端连接到服务器通过ip地址解析通过域名解析 服务端接收新连接 tcp客户端创建端点 int client_end_point() {std::string raw_ip_address 127.0.0.1;unsigned short prot_num 8888;boost::system::error_code ec;boost::asio::ip::address ip_address boost::asio::ip::address::from_string(raw_ip_address, ec);if (ec.value() ! 0){std::cout Failed to parse the IP address.Error code ec.value() .Message is ec.message();return ec.value();}boost::asio::ip::tcp::endpoint endpoint(ip_address, prot_num);return 0; }std::string raw_ip_address和unsigned short prot_num分别代表了ip地址和端口号其中127.0.0.1为本地回环地址也叫做localhost   cboost::system::error_code ec用来表示可能出现的错误。Boost.Asio 使用这个对象来存储错误信息例如网络操作中可能发生的错误   boost::asio::ip::address ip_address boost::asio::ip::address::from_string(raw_ip_address, ec);则是将字符串类型的ip地址解析为boost库中更为通用的boost::asio::ip::address 类型的对象   boost::asio::ip::tcp::endpoint endpoint(ip_address, prot_num);该语句使用ip_address 和prot_num 创建了一个 TCP 端点tcp::endpoint。端点是网络通信中表示地址和端口的对象通常用于设置连接目标。ip_address 是通过前面解析得到的 IP 地址。prot_num 是端口号表示服务监听的端口。 tcp服务端创建端点 int server_end_point() {unsigned port_num 8888;//端口号boost::asio::ip::address ip_address boost::asio::ip::address_v6::any();boost::asio::ip::tcp::endpoint endpoint(ip_address, port_num);return 0; }boost::asio::ip::address_v6::any() 是一个特殊的 IPv6 地址表示任意可用的地址通常用于服务器端监听所有可用的 IPv6 地址。如果是 IPv4 地址的话则使用 boost::asio::ip::address_v4::any() 创建socket int create_tcp_socket() {boost::asio::io_context ioc;boost::asio::ip::tcp protocol boost::asio::ip::tcp::v4();boost::system::error_code ec;boost::asio::ip::tcp::socket sock(ioc);sock.open(protocol, ec);if (ec.value() ! 0){std::cout Failed to open the socket! Error code ec.value() . Message: ec.message();return ec.value();}return 0; }boost::asio::io_context 是 Boost.Asio 中用于执行异步操作的核心对象。它是所有异步操作的调度中心负责调度和执行异步事件 boost::asio::ip::tcp protocol boost::asio::ip::tcp::v4();这段代码主要意思是选择TCP协议的版本当使用tcp::v4()代表使用的是TCP协议的IPV4版本如果使用的是tcp::v6()则代表选择的是IPV6 boost::asio::ip::tcp::socket sock(ioc);以上代码创建了一个 boost::asio::ip::tcp::socket 类型的套接字对象 sock。该套接字是基于之前创建的 iocio_context对象进行初始化的。ioc 是 io_context 对象它在后台驱动异步操作而套接字则是与网络通信的实体能够接收和发送数据 sock.open(protocol, ec);sock.open(protocol, ec) 尝试打开一个 TCP 套接字。这里的 protocol 是之前定义的 IPv4 协议boost::asio::ip::tcp::v4()。   如果打开成功sock 将变为可用状态允许进行后续的读写操作。如果失败ec 将保存错误码和错误信息 创建TCP 服务器端的 acceptor 套接字 int create_acceptor_socket() {boost::asio::io_context ioc;boost::asio::ip::tcp::acceptor acceptor(ioc);boost::asio::ip::tcp protocol boost::asio::ip::tcp::v4();boost::system::error_code ec;acceptor.open(protocol, ec);if (ec.value() ! 0){std::cout false std::endl;return ec.value();}return 0; }boost::asio::ip::tcp::acceptor acceptor(ioc);boost::asio::ip::tcp::acceptor 是一个用于监听客户端连接请求的对象。在这里acceptor 对象会依赖于 iocio_context来执行其异步操作。acceptor 的作用是等待客户端发起连接并接受连接。 boost::asio::ip::tcp protocol boost::asio::ip::tcp::v4();boost::asio::ip::tcp::v4() 表示使用 IPv4 协议类型。这里创建了一个表示 IPv4 协议的 protocol 对象。可以理解为告诉 acceptor 套接字它应该使用 IPv4 协议来进行通信。   Boost.Asio 同时支持 IPv4 和 IPv6这里选择了 v4()意味着服务器将只监听 IPv4 地址 acceptor.open(protocol, ec);以上代码 是用来打开 acceptor 套接字的函数。在这里protocol 参数指定了使用的协议IPv4ec 用于捕获错误代码。该操作会尝试在指定协议IPv4下打开一个套接字并让其开始监听传入连接的请求。   如果 acceptor.open() 操作失败错误信息会被记录在 ec 中。   这段代码并没有绑定 acceptor 到具体的地址和端口。通常情况下acceptor.open() 之后还需要通过 acceptor.bind() 或直接在 acceptor 构造函数中指定一个端点IP 地址和端口来完成绑定。   还有一种更加方便的方式创建acceptor 套接字 int create_acceptor_socket() {boost::asio::io_context ioc;boost::asio::ip::tcp::acceptor a(ioc,boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(),8888)); return 0; }acceptor的构造函数接收了两个参数 ioc即之前创建的 boost::asio::io_context 对象。acceptor 需要依赖它来执行后续的 I/O 操作。boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 8888)这是一个 endpoint 对象表示监听的具体地址和端口 创建 acceptor 套接字并绑定 int bind_acceptor_socket() {boost::asio::io_context ioc;unsigned short prot_num 8888;boost::asio::ip::tcp::endpoint ep(boost::asio::ip::address_v4::any(), prot_num);boost::asio::ip::tcp::acceptor a(ioc, ep.protocol());boost::system::error_code ec;a.bind(ep,ec);if (ec.value() ! 0) {std::cout Failed to bind the acceptor socket. Error code ec.value() . Message: ec.message();return ec.value();}return 0; }为什么这里没有对acceptor的open操作   通常情况下open 操作用来显式地打开一个套接字并指定其协议类型。在之前创建boost::asio::ip::tcp::acceptor对象时只传递了一格参数ioc而没有指定协议类型(是IPV4还是IPV6?)所以需要手动显示open,但是这里boost::asio::ip::tcp::acceptor a(ioc, ep.protocol());创建时传递了协议类型它就是在构造函数中自动完成open操作 客户端连接到服务器 通过ip地址解析 int connect_to_end() {unsigned short prot_num 8888;std::string ip 127.0.0.1;try{boost::asio::ip::tcp::endpoint ep(boost::asio::ip::address::from_string(ip), prot_num);boost::asio::io_context ioc;boost::asio::ip::tcp::socket sock(ioc, ep.protocol());sock.connect(ep);}catch (const boost::system::system_error e){std::cout Error occured! Error code e.code() .Message: e.what();return e.code().value();}return 0; }通过域名解析 int dns_connect_to_end() {std::string host www.baidu.com;std::string port_num 8888;boost::asio::io_context ioc;boost::asio::ip::tcp::resolver::query resolver_query(host, port_num, boost::asio::ip::tcp::resolver::query::numeric_service);boost::asio::ip::tcp::resolver resolver(ioc);try{boost::asio::ip::tcp::resolver::iterator it resolver.resolve(resolver_query);boost::asio::ip::tcp::socket sock(ioc);boost::asio::connect(sock, it);}catch (boost::system::system_error e){std::cout Error occured! Error code e.code() .Message: e.what() std::endl;return e.code().value();}return 0; }boost::asio::ip::tcp::resolver::query resolver_query(host, port_num, boost::asio::ip::tcp::resolver::query::numeric_service);这里创建了一个 resolver_query 对象指定了要解析的域名 host 和端口号 port_num。   boost::asio::ip::tcp::resolver::query 是 Boost.Asio 中用于描述解析查询的类它包含了域名和端口信息告诉解析器要解析哪个主机的 IP 地址。   boost::asio::ip::tcp::resolver::query::numeric_service 表示请求解析服务的端口号为数值类型确保解析器解析的是数字形式的端口号。 boost::asio::ip::tcp::socket sock(ioc); boost::asio::connect(sock, it);boost::asio::ip::tcp::socket sock(ioc) 创建了一个 TCP 套接字 sock并使用 iocI/O 服务对象进行初始化。   boost::asio::connect(sock, it) 尝试连接到解析出来的第一个 IP 地址。这里it 是从 resolver.resolve() 返回的迭代器表示解析到的 IP 地址列表。connect 会逐个尝试列表中的 IP 地址直到找到一个能够成功连接的地址。 服务端接收新连接 int accept_new_connection() {const int BACKLOG_SIZE 30;boost::asio::ip::tcp::endpoint ep(boost::asio::ip::address_v4::any(), 8888);boost::asio::io_context ioc;try{boost::asio::ip::tcp::acceptor ac(ioc,ep.protocol());ac.bind(ep);ac.listen(BACKLOG_SIZE);boost::asio::ip::tcp::socket sock(ioc);ac.accept(sock);}catch (boost::system::system_error e){std::cout Error occured! Error code e.code() .Message: e.what() std::endl;return e.code().value();}return 0; }BACKLOG_SIZE 设置为 30表示服务器在等待连接时能够排队的最大连接数。这是 TCP 协议栈的一个参数通常设置为比实际预期连接数稍大的值防止过多的连接被拒绝。 boost::asio::ip::tcp::socket sock(ioc); ac.accept(sock);boost::asio::ip::tcp::socket sock(ioc); 创建一个新的 TCP 套接字 sock用于与连接的客户端进行通信。这个套接字是通过 iocI/O 上下文初始化的。   ac.accept(sock); 调用 accept() 方法等待接受客户端的连接。当有客户端尝试连接到指定端口时accept() 会阻塞直到接收到连接请求。成功后sock 就与客户端建立了连接并且可以用它来进行数据传输。
http://www.tj-hxxt.cn/news/139902.html

相关文章:

  • 网站开发 如何备案网站后台管理系统进度
  • 网站建设品牌公司哪家好英文网站怎么做
  • 做网站后台需要什么短视频引流推广软件
  • 广州的企业网站建设中国的51区在哪里
  • 怎么查看网站用什么做的做seo的公司
  • 域名和网站名不一样wordpress主题源文件
  • 英文网站标题字体wordpress与商城
  • 怎样用别人的网站做修改病句公司制作官网
  • 网站空间购买哪个好养老网站建设的意义
  • 好的学校网站设计东莞网站设计找谁
  • c2c网站的特点及主要功能win8风格网站开发实例
  • 楚雄市城乡建设局网站成品网站5668入口的功能介绍
  • 网站开发方法有哪些百度做广告怎么做
  • 网站建设方案情况汇报公司微信网站开发
  • 专业的网站制作设计福田祥菱官网
  • 网站开发工作量个人网站免费申请注册
  • 代码网站怎么制作品质好可以说成品质什么
  • 王者荣耀网站开发目的产品开发的流程
  • 重生做皇帝小说网站个人门户网站
  • 微网站做的比较好的网站长图怎么做
  • 广州网站优7一12岁手工科技小制作
  • 购物网站制作例子百度收录自适应网站
  • 网站网络推广教程网站建设毕业设计选题
  • 网络设置的网站优秀网页设计公司
  • 搭建wordpress网站威海 网站建设
  • 阜南做网站wordpress不显示更新
  • 做网站需要什么备案个人网站可以做网上支付吗
  • 网站备案 价格手机行业网站
  • 网站的劣势自己做的网站出现左右滑动条
  • 滨州企业做网站哈德网站建设