- 博客(6)
- 收藏
- 关注
原创 TCP粘包问题处理
这篇记录TCP通信粘包问题的处理方法。以上就是处理粘包问题的一种方法,使用async_read一次性读完一整个消息头部和一整个消息体,这样就做到把粘在一起数据读的时候分开了。
2024-12-07 17:46:13
1142
原创 伪闭包延长生命周期
前面的异步服务器为echo模式,但其存在安全隐患,就是在极端情况下客户端关闭导致触发写和读回调函数,二者都进入错误处理逻辑,进而造成二次析构的问题。下面我们将通过C11智能指针构造一个伪闭包的状态延长session的生命周期。(伪闭包不是真正的闭包,而是通过智能指针和函数绑定的组合来模拟闭包的行为,以确保对象在其仍然被使用的回调函数中保持有效。我们通过bind和智能指针实现伪闭包,保证在回调函数出发前session都是有效存活的。
2024-11-26 14:39:28
462
原创 asio异步读写操作
这一篇记录的是boost::asio的异步读写操作,还是先记录api使用的代码片段,然后连起来写一个以应答为主的异步echo服务器。这里实现的这个异步服务器存在隐患,就是当服务器即将发送数据前(调用async_write前),此刻客户端中断,服务器此时调用async_write会触发发送回调函数,判断ec为非0进而执行delete this逻辑回收session。但要注意的是客户端关闭后,在tcp层面会触发读就绪事件,服务器会触发读事件回调函数。
2024-11-25 22:59:43
733
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人