c++ icop

^8^ 2014-06-05 09:33:09
1.C++ 用icop模型搭建的服务器程序:采用的机制是,如果有通道空闲就被踢出,断开连接。另外客户端有断开重连接功能。
问题1:如客户端不停的发数据包过来,服务器这边好像有阻塞,只能收到第一个包,后面的包收不到了。
问题2:后面我把代码改了下,有个clientIoData结构体存放接收缓冲数据的,能不断收到客户端发来的数据包了,但是同时有另外一个问题产生了---->如果客户端第1次发A, 服务器(clientIoData的buff)收到A
如果客户端第2次发B, 服务器(clientIoData的buff)收到AB,不停的累积
因为我服务器收到数据包后要作转发,所以这样就有问题,每一次作转发都把前一次的内容累积了。我在代码里对buff作了处理都不行。如何解决,或者是我对其中的机制理解不正确。
...全文
180 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
翅膀又硬了 2014-06-12
  • 打赏
  • 举报
回复
第二个问题,你转发完了A(也就是处理完了该数据),就要清空该数据
^8^ 2014-06-10
  • 打赏
  • 举报
回复
引用 3 楼 timetrue 的回复:
ICOP???????
IOCP
timetrue 2014-06-07
  • 打赏
  • 举报
回复
ICOP???????
shenyi0106 2014-06-06
  • 打赏
  • 举报
回复
问题1 : 从你的描述来看,应该是TCP的连包问题,你客户端发送的两次数据,被服务端一次搞定了; 解决办法,这个你需要定义包头结构,根据包头结构来解析包内容。 问题2: 应该是你的处理逻辑有问题,socket的系统缓冲区不会存在你读过的数据,还继续保留在缓冲区的问题。 应该是你对socket收到的数据又做了一层缓冲,而你从这层缓冲中读过的数据,没有清掉导致的。
xiaoyu_code 2014-06-05
  • 打赏
  • 举报
回复
话说,这个好像是粘包的问题?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧