社区
C++ 语言
帖子详情
求教,如何用winsock实现下载
cdsun
2006-07-03 10:09:29
求教,如何用winsock实现下载
本人新手
现在开始学习c++基于sdk开发
想做一个下载的功能,但是不知道如何下手各位,请指点
我的开发环境xp+vs.net2003
用的win32控制台开发
请指点
...全文
225
12
打赏
收藏
求教,如何用winsock实现下载
求教,如何用winsock实现下载 本人新手 现在开始学习c++基于sdk开发 想做一个下载的功能,但是不知道如何下手各位,请指点 我的开发环境xp+vs.net2003 用的win32控制台开发 请指点
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cdsun
2006-07-10
打赏
举报
回复
#include "stdafx.h"
#include <winsock.h>
//#include <wininet.h>
#include <windows.h>
#pragma comment(lib,"wsock32.lib")
#pragma comment(lib,"wininet.lib")
char fname[MAX_PATH];
void LogFile(char *p)
{
FILE *fp=fopen(fname,"a+");
fprintf(fp,"%s\n",p);
fclose(fp);
}
bool httpdownload(void)
{
WSADATA ws;
SOCKET s;
int i=0;
struct sockaddr_in addr;
int iResult;
long lResult;
char strSubAddr[8192], strBuffer[8192];
lResult = WSAStartup(0x0101,&ws);
int err=WSAStartup(lResult,&ws);
//如果不能初始化WinSock,退出
if(err==-1){
perror("WSAStartup");
exit(1);
}
else
{
printf("创建winsock成功!\n");
}
s = socket(AF_INET,SOCK_STREAM,0);
if(s<0){
perror("Opening stream socket");
exit(1);
}
HOSTENT* ph=gethostbyname("www.aiiyoo.com");//获得主机名
if(NULL==ph){
printf("gethostbyname=%d\r\n",WSAGetLastError());
return 0;
}
addr.sin_family = AF_INET;
addr.sin_port = htons(80);
//addr.sin_addr.s_addr = inet_addr("168.160.224.185"); // 计算机世界日报
addr.sin_addr.S_un.S_addr=*(LPDWORD(ph->h_addr_list[0]));
iResult=connect(s,(struct sockaddr *) &addr, sizeof(addr));
if(SOCKET_ERROR == iResult)
{
// 连接失败
closesocket(s);
WSACleanup();
printf("连接远程主机...失败!\n");
return false;
}
else
{
// 连接成功
strcpy(strSubAddr, "GET /lover/pic/ HTTP/1.1\r\nHost: www.aiiyoo.com\r\n\r\n");
strcpy(fname, "2006621132323.jpg");
iResult = send(s, strSubAddr,strlen(strSubAddr),0);
printf("建立连接远程主机...成功!\n");
}
// 下载文件
strset(strBuffer, 8192);
printf("%d\n",iResult);
iResult = recv(s,strBuffer,sizeof(strBuffer),0);
char* p=strstr(strBuffer,"\r\n\r\n");
LogFile(p+4);
do
{
strset(strBuffer, 8192);
i=i+1;
iResult = recv(s,strBuffer,sizeof(strBuffer),0);
printf("%d\n",iResult);
LogFile(strBuffer);
} while(iResult!=0);
closesocket(s);
WSACleanup();
printf("it's ok!");
return 0;
}
int main(int argc, CHAR* argv[])
{
httpdownload();
}
以上是我的代码。下载网页文件很快为什么下载其他类型的文件比如图片或者可执行文件都很慢。是非常的曼是为什么呢
大家能不能给点点例子看看呢
cdsun
2006-07-06
打赏
举报
回复
谁能给一个例子看看
god_sun
2006-07-06
打赏
举报
回复
就用recv(),send().把你要下载的文件以2进制的形式读入buff,太大可以分段下载
cangwu_lee
2006-07-06
打赏
举报
回复
没有办法帮到什么
programhunter
2006-07-06
打赏
举报
回复
用winsock下载?你先把HTTP,FTP等协议弄清楚才行.
每种协议格式,包的要求搞清楚,然后就能下了.
现在ms提供有Internet API,暴雪的下载器也是用这种API,建议你还是看看MSN,用这种API比较好.
fdimim
2006-07-05
打赏
举报
回复
用winsock下载?那就是c/s模式的了,你告诉服务器你想要什么东西,然后它就传那个东西给你了。 这不就下载了吗。 猜的
嫌麻烦,直接用 URLDownloadToFile 就好了。
cdsun
2006-07-05
打赏
举报
回复
没有人帮忙啊
cdsun
2006-07-05
打赏
举报
回复
自己顶一下
superxiaomm
2006-07-03
打赏
举报
回复
就TCP/IP通讯亚
cdsun
2006-07-03
打赏
举报
回复
没有人帮帮忙啊?
avfff
2006-07-03
打赏
举报
回复
精神可嘉,我在Win32 SDK这方面也是新手。互相学习。
cdsun
2006-07-03
打赏
举报
回复
你说的那个是不是太复杂了些
我只想实现下载
Socket编程系列之2:Windows-API网络编程入门实战
Winsock
编程接口 l UDP程序设计 l TCP套接口函数 l Web客户/服务器程序 l 基于windows的IO复用机制 l UDP广播和多播 l 套接字选项 l Windows套接字I/O模型 l 原始套接字与...
实现
ipv4和ipv6转换的
winsock
编程?
各位大侠,我想要在windows200下利用
winsock
编程
实现
ipv4与ipv6转换,需要在网络层截取ip数据包分析并修改。ipv4没有问题,但对于ipv6,网络层截取ipv6数据包仍不能成功,查了很多资料没有找到,
求教
各位大侠应该如何
实现
?最好有代码。谢谢!还有inet_ntop()是包含在那个头文件中?(我已经安装了ipv6协议栈)
基于
Winsock
的UDP组播通信入门
Winsock
初始化过程:首先确保包含对应版本的头文件,然后保证链接对应的库文件(可以在代码中使用#pragma comment(lib, "WS2_32"),或在编译器项目属性中链接器->输入->附加依赖项中添加ws2_32.lib);接收端在本地绑定对应的固定端口,然后加入到组播的群组,最终
实现
数据的共享。否则根据发现的问题,提炼概念,百度或请人
求教
。UDP即用户数据报协议(UDP,User Datagram Protocol),无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
远程唤醒
远程唤醒 远程唤醒技术(WOL,Wake-on-LAN) 是由网卡配合其他软硬件,可以通过局域网
实现
远程开机的一种技术,无论被访问的计算机离我们有多远、处于什么位置,只要处于同一局域网内,就都能够被随时启动。这种技术非常适合具有远程网络管理要求的环境,如果有这种要求在选购网卡时应注意是否具有此功能。 可被远程唤醒的计算机对硬件有一定的要求,主要表现在网卡、主板和电源上。 1.网卡 能否
实现
远程唤醒
vb/vb.net开发精粹(19)
如何消除多余十字光标? vb6.0 Mschar 获取X轴(注脚)的值、改变图例位置(默认右边) VB
实现
IP通讯控制 关于Mscomm通讯假死 关于WshShell.AppActivate的疑惑 求助
WINSOCK
发送邮件为什么内容稍微长点就收不到呢? 请教关于图片保存的问题。谢谢! 寻一个Activex,就是IE得到MAC的控件,希望是VB代码. 给Combo1控件赋值
C++ 语言
64,639
社区成员
250,578
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章