ACE网络服务器程序开发注意事项

        最近又研究了8年前使用过的一个开源网络服务器开发框架-ACE,发现最新版本已更新到了6.4.3.因为想开发一个能运行在云端的服务器程序,所以开始按照以前的思路开始设计并编码实现。由于ACE是跨平台库,所以在VS2015下编译了ACE后,写了一个测试程序并跑在WIN7下运行。按照8年前的想法,网络服务器程序一般都是跑在Linux下的,因为性能比Windows好。但经过测试发现,起码目前这个状况发生了一些微妙的变化。不管是使用Reactor框架还是Proactor框架来实现网络服务器,Windows下都能很好的运行,并且前摄器模式下,Proactor在Windows下的性能非常出色,主要是现在版本的Windows对底层异步IO机制做了很大的优化。而前摄器模式下,在Linux(我的是CentOS7.3)下却无法正常运行,在执行void handle_read_dgram(const ACE_Asynch_Read_Dgram::Result &result)时得到的客户端IP失败(IP地址为0),从而无法发送响应数据给相应客户端。查了一下原因,主要还是Linux中Posix异步IO的实现还不完善,内部使用aio_read无法获取对端地址。

       网上说有家公司实现了自己的前摄器TProactor,结果搜索发现网址根本打不开。并且据网上说他们对UDP协议还不支持,所以就暂时放弃了Linux下使用Proactor开发UDP服务器的想法。总的说来,使用ACE开发网络服务器程序,在Windows下是个不错的选择,特别是Proactor性能相当出色。如果在Linux下使用ACE的话,不管是TCP还是UDP服务器,最好还是用Reactor。


                                                       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值