3,881
社区成员
发帖
与我相关
我的任务
分享
Content-Length: 72838
服务器已经通知你会发送的数据长度了。但是被你无视。
3. 更重要的,如果是http协议操作,为啥不使用现成的库?你自己实现的很麻烦而且漏洞百出。可以参考这个帖子:
http://www.cnblogs.com/highway-9/p/6021238.html[/quote]
谢谢您抽出时间来帮忙解决问题!
1. 这个我昨天意识到了,所以在recv()返回字节少于缓存长度的时候,我在有效信息最后一位加'\0' 解决,之前用memset(0)做过处理,但是不能解决中间正常字符流不能解码的问题;
2. 确实应该使用这个信息更好一些,我马上在程序里更改一下。
3. 因为我之前没有接触过网络编程,这个项目更多是个学习过程。并且现在这个是为了辅助自己的工作,不是商业项目,所以没有太考效率问题。等我把这个过程走下来,再回头用您推荐的库来优化一下。[/quote]
除了网页内容之外,http协议还会发送一些额外的信息,比如200 OK之类的http应答。你是用socket自己实现http的通讯过程。所以对于socket接收的数据,要按照http协议去解析。 当然2000,8000这些具体是什么,你已经把接收到的完整数据保存到文件里了,打开看看大概就知道是怎么回事了。[/quote]
老兄,能不能再帮我看一个问题^^
还是上面的代码,我建立一次连接,发送一个请求(keep-alive),会连续返回两个html信息,一个是我想要的网页源代码,最后还会返回一个很短的html,返回400,提示非法请求。 这是什么情况啊。