问一个WinInet的问题(一直没人回答!各位拜托了!!谢!)

lglabc 2004-01-12 12:00:22
我只是想实现Http下载的控制
可是无论我用MFC还是API结果都是:SendRequest()或HttpOpenRequest()的时候就将整个文件下在完成了(大文件要等很长时间。。)
Read()只是将存在CHttpFile* pFile中的数据读出来罢了,并不是从网络上读到的(因为我把网络断开测试过了!)

我想问问有没有控制的方法,或者就是WinInet的毛病呢!

谢谢!
...全文
54 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovemaggic 2004-01-13
  • 打赏
  • 举报
回复
原来是这个函数没有用对HttpSendRequest().
lglabc 2004-01-12
  • 打赏
  • 举报
回复
兄台,这个程序我看了n遍了!!
就是不明白,为什么人家做的时候都好象是从网络上一点点下载数据的,到我这里就变成
先下载再读取了?

我虽然没实现这个程序,不过我的程序和他没什么区别呀!也就是一个是builder,一个是vc!

有没有人实现过这个程序,给我解释一下,我已经困惑好几天了!
这个HttpSendRequest(FhRequest, NULL, 0, NULL, 0);是不是就把数据完全下载了呢?

感激感激!
whwjn 2004-01-12
  • 打赏
  • 举报
回复
http://www.csdn.net/magazine/sourcecode/Topic/0/76.shtm
davemin 2004-01-12
  • 打赏
  • 举报
回复
WinInet 本来就是为上层提供简单接口的。

如果需要控制,可以用win 32 api 可以一点点read , 这应该算是很好的控制的方法

HINTERNET hRootHandle, hOpenUrlHandle;
hRootHandle = InternetOpen(
TEXT("Example"),
INTERNET_OPEN_TYPE_DIRECT,
NULL,
NULL,
0);

hOpenUrlHandle = InternetOpenUrl(
hRootHandle,
TEXT("http://www.LooseSoft.com"),
NULL,
0,
INTERNET_FLAG_RAW_DATA,
0);

//InternetSetOption( hOpenUrlHandle,

int leng = 0;
char lpBuffer[ 1024 ];

while( TRUE )
{
memset( lpBuffer, 0, 1024 );

DWORD dwRead;
BOOL b = InternetReadFile( hOpenUrlHandle,
lpBuffer,
1024,
&dwRead );

if( !b )
break;
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT2 );

pEdit->SetSel( leng, leng );

CString strText = lpBuffer;
strText.Remove( '\r' );
strText.Remove( '\n' );

pEdit->ReplaceSel( strText );
//break;
leng += dwRead;

if( dwRead < 1024 )
break;
}

// Close the handle created by InternetOpenUrl, so that the
// InternetOpen handle can be closed.
InternetCloseHandle(hOpenUrlHandle);

// Close the handle created by InternetOpen.
InternetCloseHandle(hRootHandle);


lglabc 2004-01-12
  • 打赏
  • 举报
回复
呵呵,搞定了,原来是需要写http协议:range: bytes= 8000-9999

辛苦各位了

不过,csdn现在不知是人气不旺,还是知道的人不愿意说,这么简单的问题知道的人一说就ok了!不知道的话,还要费不少力气。。。。

sign。。。
lglabc 2004-01-12
  • 打赏
  • 举报
回复
to:davemin兄
你的意思是wininet不能实现了?用控制的手段来伪装我也可以办到。。
不过http://www.csdn.net/magazine/sourcecode/Topic/0/76.shtm所说的程序难道有一定的欺骗性?


呵呵,如果是这样,我只好改用socket了!用wininet也是想学些东西,真的不行吗?
zhangcrony 2004-01-12
  • 打赏
  • 举报
回复
這個也不懂。觀注中......

18,357

社区成员

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

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