C++ 建立本地网络服务器 (Boost.Asio库)

引言

寸光阴,当下我们或许更需要利用现有的知识,应用现有的技术。网络是当前互联网的根本,了解网络便开始显得极其重要。今天我们利用Boost库中Asio部分,浅尝网络服务器。此处不做过于深入的开展,为达成学习目的,只做简单的异步并发服务器。

注意:本篇代码没有直接引用boost等命名空间,为的是新入门Boost的同学能够更好的了解每个参数在boost的具体命名空间位置,有助于更好的理解boost的布局。

版权所有:_OE_ ,转载请注明出处: http://blog.csdn.net/csnd_ayo
码云源代码下载:https://git.oschina.net/Mr_ChenLuYong

服务器用例

我们在做服务器之前,首先细想一下,服务器应具备哪些基本特质。
1、构建:一个服务器应该具备被连接的IP地址(网络地址)、可以被访问的Port(端口号)
2、聆听:服务器应该能够实时处理基本的连接请求
3、处理:交互才是目的,可以与客户端实现基本的交互
4、异步:处理客户端的请求时,不会因为客户端的延迟响应而导致程序假死

建造(Build)

电脑里有非常多的端口,而客户端只会把消息传到约定的地址与端口,只有在正确的端口等待,才能接到自己预期的客户。
就好像楼房里有非常多层楼一样,而快递员只会把物品送到约定的楼层,只有在正确的楼层等待,才能达成预期的结果。

#include <iostream>
#include <boost/asio.hpp>

int main(void) {
	try {
		std::cout << "server start." << std::endl;
		// asio程序必须的io_service对象
		boost::asio::io_service ios;
		// 具体的服务器地址与端口
		boost::asio::ip::tcp::endpoint endpotion(boost::asio::ip::tcp::v4(), 13695);
		// 创建acceptor对象,当前的IPV4作为服务器地址(127.0.0.1 || 0.0.0.0),接受端口13695的消息.
		boost::asio::ip::tcp::acceptor acceptor(ios, endpotion);
		// 打印当前服务器地址
		std::cout << "addr: " << acceptor.local_endpoint().address() << std::endl;
		// 打印当前服务器端口
		std::cout << "port: " << acceptor.local_endpoint().port() << std::endl;
	}
	catch (...) {
		std::cout << "server exceptional." << std::endl;
	}
	std::cout << "server end." << std::endl;
	getchar();
	return 0;
}



聆听(Listen)

一个基本的连接,在正常的情况下,应该由客户端发起,服务器应该处于实时监听的状态,因为能接到客户端发起的连接请求,这才是网络操作的根本。

#include <iostream>
#include <boost/asio.hpp>

int main(void) {
	try {
		std::cout << "server start." << std::endl;
		// asio程序必须的io_service对象
		boost::asio::io_service ios;
		// 具体的服务器地址与端口
		boost::asio::ip::tcp::endpoint endpotion(boost::asio::i
  • 15
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值