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"按钮,
相关文章推荐
- VC实现简单Http连接
- Linux检测TCP连接断开的一种简单实现方法http://blog.csdn.net/wtewrw/article/details/6547380
- ssh反向连接和简单实现 转http://www.broncho.cn/forum/viewtopic.php?p=1116
- comet(http 请求长连接) 之 ajax 长查询 简单实现。 (webim 即时通讯)
- comet(http 请求长连接) 之 ajax 长查询 简单实现。
- 安卓实训第三天---简单的用户登录界面,用HTTPURLConnection实现与服务器的连接
- 基于ASP.NET的comet简单实现 http长连接,IAsyncResult
- 双缓冲技术绘图原理及简单的VC实现
- VC 2012 中调用WebBrowser简单的实现过程(图解过程)
- HttpClient之简单爬取页面的实现
- VC实现 拨号连接及动态IP地址获取
- JDBC--实现用java连接oracle数据库的操作(简单实用)
- Windows 上静态编译 Libevent 2.0.10 并实现一个简单 HTTP 服务器
- PROC简单使用用例--VC连接ORACLE
- 用C++实现简单的文件I/O操作(转载自http://developer.51cto.com/art/201107/277311.htm)
- PROC简单使用用例--VC连接ORACLE
- Nginx之一:实现简单HTTP模块helloworld
- Nginx之一:实现简单HTTP模块helloworld
- Windows 上静态编译 Libevent 2.0.10 并实现一个简单 HTTP 服务器
- Windows 上静态编译 Libevent 2.0.10 并实现一个简单 HTTP 服务器