您的位置:程序门 -> vc/mfc -> 网络编程



用httpsendrequest发送get命令成功率太低,为什么啊?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


用httpsendrequest发送get命令成功率太低,为什么啊?[已结贴,结贴人:loskill]
发表于:2007-03-15 10:09:35 楼主
代码基本上是这样的:
internetopen...
internetconnect...
for循环
{
    httpopenrequest...
    httpsendrequest...
    然后读返回值,读完后,关闭httpopenrequest的句柄
  }  
现在的问题是,如果循环量比较大的话,失败的比较多。
用getlasterror得到的值大多是
error_internet_timeout
error_internet_connection_aborted
error_internet_operation_cancelled
发表于:2007-03-15 10:49:361楼 得分:100
把获得   chttpconnection   对象的代码放到循环里边

for循环
{
    chttpconnection   =   psession-> gethttpconnection
    httpopenrequest...
    httpsendrequest...
    然后读返回值,读完后,关闭httpopenrequest的句柄

    用完后全部要delete掉
  }  

一般一个http连接只能用作一次交互,即发送一次请求,读服务器的回复;然后服务器就会把这个连接给关掉,意思是不能再用这个socket发送数据了

另外你这样写代码,程序的吞吐量很小,因为循环很多次,然而大部分时间都浪费在和服务器建立连接的时间上了,导致程序很慢。建议采用线程池,windows有很方便的线程池,方便,功能强大,看看这个函数   queueuserworkitem。

具体使用线程池参看jeffrey   richter《windows高级编程》


快速检索

最新资讯
热门点击