recv到数据后放入到缓冲区中处理

rightorwrong 2010-05-11 05:58:39
有多种命令进行处理,服务器端recv收到的数据包可能不是一个完整的逻辑包,也可能是收到了多个逻辑包。现在想把收到的数据放到缓冲区,由另一个线程解析出逻辑包,进行处理,有点需要返回。在返回时不知道要发到哪一个socket,这个怎么处理呢。
请指点下
...全文
181 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
【天运子】 2010-05-29
  • 打赏
  • 举报
回复
用数组 链表 容器 都可以
rightorwrong 2010-05-15
  • 打赏
  • 举报
回复
to ilovejanx,这样的话就是一个socket一个缓冲区,你说的是结构体缓冲区吧,缓冲区里放的是一个socket和数据的结构体,每次接收到的数据可能并不是一个完成的包,还要做数据解析。
你说的做不到啊

很麻烦哪
ilovejanx 2010-05-14
  • 打赏
  • 举报
回复
heihengheng 说的怎么不行?

定一个结构体,包含每个数据包的hash标志 和数据本身,放到缓冲区中。需要做同步处理,可以用双缓冲试试看
heihengheng 2010-05-13
  • 打赏
  • 举报
回复
根据IP 做哈希表 来区分不同的用户。我就是这样做的。
【天运子】 2010-05-13
  • 打赏
  • 举报
回复
用到连接池,可以保留多个连接的套接字,可惜我不会,我也在找连接池的资料。。。
rightorwrong 2010-05-13
  • 打赏
  • 举报
回复
to heihengheng,是不行的啊。把收到的数据放到一个缓冲区,用怎样的方法来把这个socket和数据对应起来。在后面解析完成处理后直接向这个socket返回呢?
rightorwrong 2010-05-12
  • 打赏
  • 举报
回复
to bragi523,如果以socket为索引的话,这样每个接入的客户端都会有一个缓冲区,这样肯定不好处理,接入的客户端太多了。
to jenf,把收到的数据放到缓冲,另一个线程解析后经过处理不知道是那个socket发送过来的,该向哪个socket返回处理结果了

还有什么好的方法么,大家帮忙想想怎么做才好呢
jenf 2010-05-11
  • 打赏
  • 举报
回复
如果是tcp的话,就发给你accept时返回的客户的的socket
是UDP的话,使用sendto可以直接发送给IP+端口
bragi523 2010-05-11
  • 打赏
  • 举报
回复
可以以sock为索引存map

18,356

社区成员

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

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