终于发现HttpSendRequest卡死的原因了

toyix1234 2012-05-11 09:40:44
搞了一两天,别人告诉我设置超时时间,但是最后我加了一个\R\N就不卡死了


就是说给服务端发送的数据,不是有包头和要提交的数据吗。

sprintf(PostData,"%s%s%s%s%s\r\n",
“”
);
这是我的格式化提交数据的代码,我加上\R\N,就不会卡死,服务器返回200,


我想问问这是为什么. 而且最重要的是 ,我又陆续向服务器发了几个包,然后有一个包又出现卡死,但是这次加回车也不灵了。。。

自己的想法:我认为卡死,应该和包内容错误和正确没有关系把,感觉是格式错误 ,服务器接收不了

还有就是问问WinInet编程中,连接超时是什么意思。 设置的超时时间,后面的代码就不跑了吗
...全文
784 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ok1234567 2012-05-11
  • 打赏
  • 举报
回复
http请求头必须以一个空行("\r\n\r\n")结束,
ok1234567 2012-05-11
  • 打赏
  • 举报
回复
不会是尾部加"\r\n"的问题,而是你的PostData的真实长度计算错误,多算了,服务器要等待接收你指定的附加数据长度(Content-Length),直到服务器超时,少一个字节也不灵:)

如果是Get方式,没有附加数据
http请求头必须为一个空行("\r\n\r\n"),如果服务器在接收头数居时,没有收到空行,也被认为头没有结束

你的请求中的“头”和附加数据(Post Data),在服务器开来,就是用一个空行定界的,且空行的4个字节属于头!
aCracker 2012-05-11
  • 打赏
  • 举报
回复
找一个数据包分析的软件,看看自己发的包和IE的是不是一样的.
gold_water 2012-05-11
  • 打赏
  • 举报
回复
LZ是对的,确实是要加回车换行;之前也遇到同样问题。
96掌门师兄 2012-05-11
  • 打赏
  • 举报
回复
URL不对肯定会卡的,偶尔还崩溃,自己加try{} catch(){}。
yeah2000 2012-05-11
  • 打赏
  • 举报
回复
模拟http协议?
toyix1234 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

连接超时就是连接服务器的时间过长超时了。
我的理解是设置超时后,如果超时了,就会放弃本次的操作
[/Quote]

那放弃了本次操作,后面的操作按理就应该全部放弃,要不后面的操作就全错了
笨笨仔 2012-05-11
  • 打赏
  • 举报
回复
你与网站服务器通信?
通常网站服务器在与申请连接的客户连接成功后,立即返回200,之后60秒内如无数据(上载或下载),则断开此连接。
笨笨仔 2012-05-11
  • 打赏
  • 举报
回复
你是与网站服务器通信?
网站服务器在每次通信时,与连接申请方建立一个连接,连接成功后返回200。连接成功后,网站一般会设置60秒时间内如果没有数据(上载或下载数据),则会断开此连接。
fishion 2012-05-11
  • 打赏
  • 举报
回复
连接超时就是连接服务器的时间过长超时了。
我的理解是设置超时后,如果超时了,就会放弃本次的操作

18,356

社区成员

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

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