您的位置:首页 > 理论基础 > 计算机网络

VC实现简单Http连接

2010-05-24 23:43 274 查看

VC实现简单Http连接

关键字/核心提示:连接,实现,简单,
一、引言WindowsSocketAPI是一套开放的、支持多种协议的Windows下的网络编程接口,它包括一个标准的BerkeleySocket功能调用的集合,以及为Windows所作的重要扩充。WindowsSocket经过不断完善并在众多公司的全力支持下,已成为Windows网络编程的事实上的标...

一、引言

----WindowsSocketAPI是一套开放的、支持多种协议的Windows下的网络编程接口,它包括一个标准的BerkeleySocket功能调用的集合,以及为Windows所作的重要扩充。WindowsSocket经过不断完善并在众多公司的全力支持下,已成为Windows网络编程的事实上的标准。

----本文将在VC 5.0环境下介绍一个基于Winsock的HTTP客户应用程序。读者可以基于本例同样的原理实现其他Internet常用协议(time,SMTP,POP3,Telnet,FTP等)的客户应用程序。

二、一个简单的浏览器

----我将创建一个简单的浏览器,以说明如何通过Winsock基于HTTP协议实现HTTP客户应用程序。

----首先我将创建一个帮助函数LogFile(),该函数把传递给它的字符串写到磁盘文件中。然后再创建本示例的核心函数--HttpClient()。在这个核心函数中,我将通过Winsock连接到HTTP服务器上(本例中我将使用计算机世界日报168.160.224.185)。当连接成功后,发送Get命令到HTTP服务器去下载指定路径上(/99/tips/)的文件。通过帮助函数LogFile()把下载的数据记录到本地磁盘文件中。

charfname[MAXPATH];
voidLogFile(char*p)
{
FILE*fp=fopen(fname,"a ");
fprintf(fp,"s",p);
fclose(fp);
}

BOOLHttpClient(void)
{
WSADATAws;
SOCKETs;
structsockaddr_inaddr;

intiResult;
longlResult;
charstrSubAddr[100],strBuffer[100];

lResult=WSAStartup(0x0101,&ws);
s=socket(AF_INET,SOCK_STREAM,0);

addr.sin_family=AF_INET;
addr.sin_port=htons(80);
addr.sin_addr.s_addr=inet_addr
("168.160.224.185");//计算机世界日报
iResult=connect(s,(structsockaddr*)
&addr,sizeof(addr));
if(SOCKET_ERROR==iResult)
{
//连接失败
WSACleanup();
returnFALSE;
}
else{
//连接成功
strcpy(strSubAddr,"GET/99/tips/");
strcpy(fname,"index.htm");
iResult=send(s,strSubAddr,strlen(strSubAddr),0);

//下载文件
do{
strset(strBuffer,'');
iResult=recv(s,strBuffer,sizeof(strBuffer),0);
LogFile(strBuffer);
}while(iResult!=0);
}

WSACleanup();
returnTRUE;
}

三、测试

----打开VisualC 5.0,用MFC创建基于对话框的工程Test,并在对话框上放置"Test"按钮,然后添加测试代码。

VoidCTestDlg::OnTest()
{
HttpClient();
}

----编译并运行该测试程序,在测试对话框中,单击"Test"按钮,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: