http 协议消息体和消息头在底层发生时 被拆开 WHY?解决方案

http 协议消息体和消息头在底层发生时 被拆开 WHY???
最近搞http协议,发现一个问题,自己写的程序消息头和消息体发送到服务器时 总是被拆开来发送,而网上的一个客户端http/htts debuger 发生消息确是吧消息头和消息体放在了一起一次发生,不知道底层是怎么处理的,由于涉及到服务器的的设计,问题需要深究,哪位熟悉的 给点拨下哈 ,上个图片帮助分析.

------解决方案--------------------
这有影响吗???
send recv这种函数经常有两次发,一次收之类 的.
反正拆开了,又合上了,很正常
------解决方案--------------------
你是一次发送成功就行了,它怎么发送也没事
------解决方案--------------------
探讨
网络编程做的少,别鄙视哈,更简单的描述是 send buf如果是 216bytes,接收到的数据是 第一次 156bytes,第二次50bytes,设想的是在recv这一端 只recv一次,1楼的意思好像不是,难道要我做数据完整性判断 吗?

------解决方案--------------------
你只管组包,然后发送就可以了。格式要对。header跟body一起发也行,分开也行。。

如果要知道为什么。就看看http实现吧。
------解决方案--------------------
遇到\r\n\r\n就认为HTTP请求头结束了
实体的长度由Content-length头域标志出。
------解决方案--------------------
探讨
只检测\r\n ,那么Data部分要不要以\r\n\r\n结束呢? 我用omnipeek 抓包data 有时候它有<CR><LF>,有时没有,用wildshark 都是没有的,send的时候需要否. thx

引用:

引用:
网络编程做的少,别鄙视哈,更简单的描述是 send buf如果是 216bytes,接收到的数据是 第一次 156bytes,第二……

------解决方案--------------------
http协议底层是tcp协议,tcp只保证数据流能正确到达,却从不保证分几次到达。所以,不管你最终是否解决了这个"配置"问题,你的代码都必须保证无论包分几次发到都能正确地处理。
------解决方案--------------------
...TCP是字节流, 不是你想发多少就收多少的..

你只有每次解析buffer,找\r\n\r\n,拆出header,将里面的字段都解析出来,把content-length也找出来,然后将接下来的content-length长度的数据作数据存起来,就得到了一个完整的http request请求。用状态机开发这个是非常必要的。




------解决方案--------------------
探讨

问题的问题发现了,我的电脑那个VS05地方配置的问题,在同事机器上,这个send是一次发送,一次接收的,在我的机器上就是拆开发送,具体是哪里的设置问题,的细查VS配置了

------解决方案--------------------
坐等赵老师的拷贝粘贴“send(人多)send(病少)send(财富)”