码迷,mamicode.com
首页 > 其他好文 > 详细

socket框架续,异步socket

时间:2015-09-26 14:43:23      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

上一篇对socket进行了简单的封装,但是由于send和recv都是同步的,真正使用的时候一般都需要异步的,如果让应用层自己负责维护异步线程,那这个框架就不实用了,所以异步收发还是要有的。

不知道怎么说起,先占坑以后再慢慢说吧。

我的实现方法:

1、创建SendBuffer和RecvBuffer,包装发送和接收的消息。

2、使用循环队列创建发送队列和接收队列,异步调用只需要将消息加入队列。(循环队列的实现可以参考 http://www.cnblogs.com/wolfred7464/p/4337093.html)

3、创建发送线程和接收线程,用来处理队列中的消息。

4、断开连接时,先通知并等待发送和接收线程结束,然后关闭socket连接。

 

为什么使用循环队列,是考虑到减少内存频繁申请释放造成的内存碎片和效率问题,而且队列故意没有设计动态增长的功能(添加这个功能很简单,创建新节点,调用两次set_next连接进去就可以),定制socket框架肯定是为了适应具体项目的需要,具体项目socket缓冲队列的大小是应该提前估算好的,如果队列满,异步调用会返回一个错误码,这时候应该认为是断网了,或者程序有bug,而不应该让队列去动态增长。

最后附上代码的github链接,只是初步设计完成,功能还会继续完善。https://github.com/Anti-Magic/AsyncSocket

socket框架续,异步socket

标签:

原文地址:http://www.cnblogs.com/wolfred7464/p/4840702.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!