论坛登陆 注册 教程 笑话 影视 投稿
首页 | 页界资讯 | 网络应用 | 软件应用 | 组网技术 | 网络原理 | 聊天通讯 | 网管知识 | 帮助
笑话 | 操作系统 | 注 册 表 | 编程开发 | 数 据 库 | 媒体动画 | 网页设计 | 图形图象 | 地图
论坛 | 网络安全 | 安全防范 | 服 务 器 | 硬件学堂 | 路由技术 | 搜索研究 | 站长经验 | 投稿
影院 | 教育频道 | 特色专题 | 精文荟萃 | 注 册 码 | 论坛社区 | 网站地图 | 广告服务 | 旧版
设为首页 加入收藏
当前位置:首页>>文章>>编程开发>>Visual C++>>正文

用 VC++和Winsock 实现与 HTTP 服务器通话

www.xker.com 作者: 来源:zahui 加入日期:2006-3-8 10:01:37

【问题提问、论坛交流】

一、引 言
---- Windows Socket API是一套开放的、支持多种协议的Windows下的网络编程接口,它包 括一个标准的 Berkeley Socket功能调用的集合,以及为Windows所作的重要扩充 Windows Socket经过不断完善并在众 多公司的全力支持下,已成为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() 把下载的数据记录到本地磁盘文 件中

char fname[MAXPATH];
void LogFile(char *p)
{
FILE *fp=fopen(fname,"a+");
fprintf(fp,"%s\n",p);
fclose(fp);
}

BOOL HttpClient(void)
{
WSADATA ws;
SOCKET s;
struct sockaddr_in addr;

int iResult;
long lResult;
char strSubAddr[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,(struct sockaddr *)
&addr, sizeof(addr));
if(SOCKET_ERROR == iResult)
{
// 连接失败
WSACleanup();
return FALSE;
}
else {
// 连接成功
strcpy(strSubAddr, "GET /99/tips/ \r\n");
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();
return TRUE;
}

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

Void CTestDlg::OnTest()
{
HttpClient();
}

---- 编译并运行该测试程序,在测试对话框中,单击 "Test" 按钮,

---- "http://www.computerworld.com.cn/99/tips/"的index.htm文件将被下载到本地

四. 结 论
---- 这应该就是Netscape Navigator,Internet Explorer以及其他浏览器实现Internet访 问的基本代码了. 在这些浏览器中,其他百分之九十以上的代码主要用于HTML显示等 本地处理上

---- 读者如果有兴趣,基于这些代码,再加入一些解释HTML命令的代码,就可以正确显示 所下载的HTML文件, 那也就是说将拥有自己版本的一个百分之百的浏览器了何不一试 ?


编辑:xker.com

上一篇:VC和Delphi程序只运行一个实例的方法
下一篇:没有了
关闭窗口】【技术交流】【收藏此页
相关文章
·深入浅出VC++串口编程之DOS的串口编程·VC++实现Windows系统回收站的文件存取·在VC++应用程序中实现颜色选择组合框
·用Visual C++语言在局域网实现IP多播·Visual C++ 2005中的命名返回值优化·VC++编程实现对火焰的计算机动态仿真
·用VC++自制王码五笔输入法安装包 
推荐文章 最新文章 热门文章
·Jsp开发环境配置全过程
·Fireworks制作妇女节主题宣传动画(图
·主动FTP与被动FTP-权威解释
·FTP连接后为什么列表错误,无法列表
·拒绝提示窗口 让操作自动赶走网络烦恼
·视频格式转换工具使用集锦
·通过SQL Server 2005索引视图提高性能
·SQL Server 2005新特性
·SOHO族安全建议-保证上传服务器安全
·服务器安全配置精华技巧
·缔造神话 十大怪招助你200%提升迅雷速
·有备无患 WinXP下软件数据大迁移
·流量牵引技术在防DOS攻击中的应用
·解决w3wp.exe内存占用问题
·IIS网站防盗链下载的解决方案
·用 VC++和Winsock 实现与 HTTP 服务
·内存转储
·将Oracle的查询结果输出为文件
·SQL Server 2005
·SQL Server 2005数据库开发概述
·SQL Server 2005 Service Broker初探
·Microsoft SQL Server 2005中的XML选
·Microsoft SQL Server 2005中的XML选
·SQL Server 2005中的批编译、重新编译
·SQL Server 2005中的批编译、重新编译
·你的网站上显示Alexa世界排名的代码(
·网络僵尸接连作案 多家企业局域网受重
·Jsp开发环境配置全过程
·剪出精彩:明明白白“剪贴板”
·Fireworks制作妇女节主题宣传动画(图
·个人简历表格
·免费代理IP(每日更新)
·QQ密码丢失后能做的事情:快速找回密码
·Norton AntiVirus 2006 注册码(激活
·豪杰超级解霸V9.1正版注册码
·WinRAR 3.51 注册码
·系统优化 专题
·找回QQ密码的注意事项 
·史上最强QQ个人档案资料欣赏
·Ajax技术开发指南
·求职简历封皮
·最经典的黑客入门教材
·ACDSee v8.0注册码
·应届毕业生求职信
·怎样查找对方的IP地址
评论

设为首页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyright © 2003-2006 xker.com All rights reserved.小新技术网 合作广告QQ:12231446
本页浏览次数: