关于socket消息读取的问题

chain78 2016-12-06 03:04:23
在做一个客户端用于处理服务器发来的消息,看UNIX网络编程上的示例都是搞一个缓存区,while循环读取sockfd内容,
每条消息包含消息头和消息尾,想请问下每次读取消息时,会正好只读一条消息吗?
如果服务器连续发来多条消息,是一起读上来的,还是一条一条读呢?
因为在接收消息的同时还要处理消息,在处理的消息的过程时,服务器发来了多条,这又是什么样的情况呢?
...全文
399 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2016-12-13
  • 打赏
  • 举报
回复
由于网络会有动荡,所以不能保证一次都接收,也可能一条一条或者一条,间隔多条接收.所以,对于网络动荡的解决方式是建立环形缓冲,然后根据消息结构逐一解析.
X-i-n 2016-12-06
  • 打赏
  • 举报
回复
不会正好,有可能会出现粘包的情况,需要自己定义数据结构,比如约定一条完整的消息用"<BEGIN>"起始,"<END>"结尾,并且数据体也需要预先约定好结构,这样的话,数据连起来就是<BEGIN>11#aa#532342<END><BEGIN>12#ab#52324123<END>……,逢<END>进行处理

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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