RT

解决方案 »

  1.   

    HOHO。楼主,我也用过wininet,感觉还可以啊。你再花一个月时间搞下wininet,结果可能比你自己做会有更好效果。wininet底层也是用了socket,不过是封装了一下而已。你也不是需要做同样的事情嘛。
      

  2.   

    我一直用wininet,也觉得很好啊。socket整更没必要,开源库大把大把的...
      

  3.   

    听到wininet的异常我也碰到过
    是不是HttpOpenRequest的问题?哈哈,而且是UNICODE的问题
    const TCHAR acceptTYPE[] = _T("*/*");
    HINTERNET hFileRequest = HttpOpenRequest(hConnect,_T("GET"),strFile,_T("HTTP/1.1"),NULL,&acceptTYPE,
    INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD,0);
    有异常,而改为下面就好了
    const TCHAR* acceptTYPE[] = {_T("*/*"),0};
    HINTERNET hFileRequest = HttpOpenRequest(hConnect,_T("GET"),strFile,_T("HTTP/1.1"),NULL,acceptTYPE,
    INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD,0);
      

  4.   

    是异步接收出的异常,经常就莫名其妙的给抛出来。
    而且wininet在背后起了若干个线程,不爽。
      

  5.   

    异步哪有不起线程的,看看IE,需要多少个线程啊,除了浏览器控件使用的线程,moniker需要独立线程,wininet需要独立线程,xmlhttp需要独立线程,脚本引擎更是独立的线程,即使楼主自己用socket来做异步也一样需要多线程。
      

  6.   

    异步 <> 必须使用多线程
      

  7.   

    个人觉得遇到异常要么是环境不好(如服务器连不上),要么是你代码有问题
    异常是狠正常的事情,你换socket虽然可能遇到的不是异常,但是还是会遇到不同种类的失败。
    如果不是看见异常就找到原因解决它,而是赶快换个接口,我估计你还得换接口。当所有接口都失败时,你怎么办?好好调试,不要以为一换万事顺,哪有这么便宜的。
      

  8.   

    消息循环也能实现异步,但是socket如何在单线程环境下使用异步?同步IO就不是异步了,重叠IO也是多线程。