如何用winsock正确的下载文件

hktl 2001-06-13 12:10:00
先说明我的程序的目的
(我的程序是用来从网上下载文件回来的,如GetRight,网络蚂蚁等程序)
下面是我用的下载方法
比如下载的网址是:http://www.csdn.net/expert/topic/156/156941.shtm

addr.sin_family = AF_INET;
addr.sin_port = htons(80); 设为HTTP端口
aa = gethostbyname("www.csdn.net");
memcpy(&(addr.sin_addr), aa->h_addr, aa->h_length);
iResult=connect(s,(struct sockaddr *) &addr, sizeof(addr));
strSubAddr="GET /expert/topic/156/156941.shtm HTTP/1.0\r\n Host:www.csdn.net";
iResult = send(s, strSubAddr,strlen(strSubAddr),0);
然后用recv下载文件......

上面是代码下载http://www.csdn.net/expert/topic/156/156941.shtm
是没有问题的
可以下载

但如果网址是http://us.yimg.com/i/hk/m5v3.gif时
下载回来的却是:
HTTP/1.0 302 RD
Location: http://www.yahoo.com/

请问各位高手们仁兄们
要如何才能正确的下载文件呢
像GetRight,网络蚂蚁是如何处理一个网址的
...全文
1202 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
programmer 2001-06-18
  • 打赏
  • 举报
回复
My E-mail:
programmer999@163.com
gqxs 2001-06-15
  • 打赏
  • 举报
回复
关注
fisher 2001-06-15
  • 打赏
  • 举报
回复
我的邮箱是
d_-_b@163.net
fisher 2001-06-15
  • 打赏
  • 举报
回复
to amuluo
可以给我一份吗?
THX
fisher 2001-06-15
  • 打赏
  • 举报
回复
amuluo()
amuluo 2001-06-14
  • 打赏
  • 举报
回复
本人不知在什么地方下载了一份ZIP包,里面竟然有最新的开发HTTP,FTP,BBS,E-MAIL等协议的文档,意外的详细。不过是全E文的,有兴趣的我可以先发一份给你们瞧瞧(好事大家享)^o^
我不是大明 2001-06-14
  • 打赏
  • 举报
回复
winsock好用吗?
lastshrill 2001-06-14
  • 打赏
  • 举报
回复
to :hktl(風)
你讲讲是怎么回事?
我来听课
Go_Rush 2001-06-14
  • 打赏
  • 举报
回复
听课中....
Kevin_qing 2001-06-13
  • 打赏
  • 举报
回复
_snprintf(request,4096,
"GET %s HTTP/1.0\r\n"
"Host: %s\r\n"
"\r\n"//blank line means end of request
,path,server);
忘了写反括号了
Kevin_qing 2001-06-13
  • 打赏
  • 举报
回复
写个简单的例子给你看看把
LPCSTR getServer(LPCSTR url)
{ static server[1024];
LPCSTR s,e;
int l;

s=strstr(url,"http://");
if(s)s+= 7;
else
return NULL;
e=strchr(s,'/');
if(!e)return NULL;
l=e-s;
memcpy(server,s,l);
server[l]=0;
return server;
}
LPCSTR getPath(LPCSTR url)
{
s=strstr(url,"http://");
if(s)s+= 7;
else
return NULL;
e=strchr(s,'/');
return e? e:NULL;
}
void main()
{
LPCSTR URL="http://us.yimg.com/i/hk/m5v3.gif";
LPCSTR server,path;
...

server=getServer(URL);
path=getPath(URL);

aa = gethostbyname(server);
...
memcpy(&(addr.sin_addr), aa->h_addr, aa->h_length);
iResult=connect(s,(struct sockaddr *) &addr, sizeof(addr));
..
char request[4096];
_snprintf(request,4096,
"GET %s HTTP/1.0\r\n"
"Host: %s\r\n"
"\r\n"//blank line means end of request
,path,server
iResult = send(s, strSubAddr,strlen(strSubAddr),0);
recv(......);
//it's ok now
}


huangbeyond 2001-06-13
  • 打赏
  • 举报
回复
详细参考HTTP和FTP协议!!
Kevin_qing 2001-06-13
  • 打赏
  • 举报
回复
我试了一下,很正常
$ telnet us.yimg.com 80
Trying 216.115.108.245...
Connected to usorig.yimg.com.
Escape character is '^]'.
GET /i/hk/m5v3.gif HTTP/


HTTP/1.0 200 OK
Content-Type: image/gif
Content-Length: 6963
Last-Modified: Fri, 15 Apr 1994 00:00:00 GMT
Expires: Thu, 15 Apr 2010 20:00:00 GMT

................
Kevin_qing 2001-06-13
  • 打赏
  • 举报
回复
可能是你的server解析有问题。
建议你去看一下RFC 1945(HTTP1.0)。
Kevin_qing 2001-06-13
  • 打赏
  • 举报
回复
是什么问题啊?
原因是什么?
hktl 2001-06-13
  • 打赏
  • 举报
回复
Kevin_qing(Kevin)
谢谢你的帮忙
可以下载了
Kevin_qing 2001-06-13
  • 打赏
  • 举报
回复
这个请求很正常啊····没有什么问题。

用IE能下载吗?
ahphone 2001-06-13
  • 打赏
  • 举报
回复
我来听课的,该听谁的呢?
hktl 2001-06-13
  • 打赏
  • 举报
回复
Kevin_qing(Kevin)还在吗

望各位高手能帮一下
hktl 2001-06-13
  • 打赏
  • 举报
回复
http://us.yimg.com/i/hk/m5v3.gif

还是不能下载啊
加载更多回复(7)
1、软件目录 |--MailSystemServer(服务器) |--POP3Server.exe(POP3接收邮件服务器可执行程序) |--smtpserver.exe(SMTP发送邮件服务器可执行程序) |--popserver.cpp(POP3接收邮件服务器c语言源程序) |--smtpserver.cpp(SMTP发送邮件服务器c语言源程序) |--user.dat(POP3服务器用户信息文件) |--MailSystemClient(客户端) |--image(测试客户端的图片目录) |--checkUser.php(检查用户是否合法) |--deleMail.php(删除邮件) |--firstIn.html(显示帮助信息) |--handlePop3.php(建立和pop3服务器连接并进行命令处理) |--handleSmtp.php(建立和smtp服务器连接并进行命令处理) |--index.php(邮件客户端首页) |--login.php(通过验证后登陆的页面) |--mailHandle.php(进行邮件文件的处理) |--mailList.php(收件箱邮件列表) |--mailView.php(收件箱邮件详细视图) |--menu.php(邮箱操作目录) |--recycleBoxList.php(垃圾箱邮件列表) |--recycleBoxView.php(垃圾箱邮件详细视图) |--register.php(邮箱用户注册页面) |--SaveMail.php(保存邮件到发件箱) |--saveUser.php(保存注册的用户信息) |--sendBoxList.php(发送箱邮件列表) |--sendBoxView.php(发件箱邮件详细视图) |--sendMail.php(连接SMTP服务器并发送邮件) |--writeMail.php(写邮件) |--毕业论文.doc |--基于WinSock的邮件系统.ppt(PowerPoint演稿) |--软件说明.txt 2、软件运行环境: 操作系统:windows9x/windows2000/windowsxp CPU: 500MHZ以上; 内存: 256M以上; 服务器: php4.1.1 apache1.3.23 3、软件使用方法: (1)正确配置好你的php服务器 (2)将MailSystemServer(除源文件外)和MailSystemClient目录拷贝到你的php服务器某个目录 (3)运行pop3服务器和smtp服务器 (4)登陆MailSystemClient/index.php客户端首页开始收发邮件

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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