请教下socket通信的问题---结构体型数据

chp845 2014-03-31 05:31:41
包头定义如下:
code=c]struct data_head
{
int cmd;
int len
};[/code]


请问下,如果发生如下异常的情况应该怎么解决?
1.如果客户端发生错误,连续发送了2次4个字节的数据,这时候已经发送的错误数据长度也等于一次包头的长度,请问这种异常怎么处理?
2.正常情况下,使用包头和包体这种通信方式,在长连接中合适吗?
3.正常采用结构体通信的socket,怎么才能很好处理包体和包头的切换,同时也能够兼顾客户端故意的异常呀!
...全文
112 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mujiok2003 2014-03-31
  • 打赏
  • 举报
回复
引用 3 楼 chp845 的回复:
[quote=引用 2 楼 mujiok2003 的回复:] TCP流:使用tag + length + data这种形式,注意字节序和内存对齐
tag这个不好确定呀!因为错误的字节流也会出现tag数据呀!所以,有什么其他比较好的办法校验吗?[/quote] “错误的字节流会出现tag”是什么意思?
赵4老师 2014-03-31
  • 打赏
  • 举报
回复
我觉得在1楼给出的链接里面对楼主的问题已经讨论的够透彻了。
chp845 2014-03-31
  • 打赏
  • 举报
回复
引用 2 楼 mujiok2003 的回复:
TCP流:使用tag + length + data这种形式,注意字节序和内存对齐
tag这个不好确定呀!因为错误的字节流也会出现tag数据呀!所以,有什么其他比较好的办法校验吗?
mujiok2003 2014-03-31
  • 打赏
  • 举报
回复
TCP流:使用tag + length + data这种形式,注意字节序和内存对齐
赵4老师 2014-03-31
  • 打赏
  • 举报
回复
不知道有多少前人掉在TCP Socket send(人多)send(病少)send(财富) recv(人多病)recv(少财富) 陷阱里面啊! http://topic.csdn.net/u/20120210/09/51109ed0-07b9-41f2-b487-a51597f2ca01.html

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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