用VC++和Winsock实现与HTTP服务器通话 | |
|---|---|
| 2003-04-10 Ji Hong | |
| 一、引 言 Windows Socket API是一套开放的、支持多种协议的Windows下的网络编程接口,它包 括一个标准的 BerkeleySocket功能调用的集合,以及为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文件, 那也就是说将拥有自己版本的一个百分之百的浏览器了。何不一试 ? |
相关推荐
HTTP Client C++实现
CHttpClient.rar HTTP Client C++实现
VC(wininet类) 用wininet实现https访问
VC(wininet类) 用wininet实现https访问 以前项目中实现了wininet类对http的get和post访问,同样方法访问https的服务时出错, SendRequest函数异常,返回错误:与服务器的连接被重置 解决办法: OpenRequest的dwFlags设置为 INTERNET_FLAG_SECURE | INTERNET_FLAG_IGNORE_CERT_CN_INVALID | INTERNET_FLAG_IGNORE_CERT_DATE_INVALID 例如: conn1-&
vc用socket实现客户端服务端通信
vc用socket实现客户端服务端通信,包含源代码,在vc里面新建并行工程
c++中如何接收和发送http请求
主要是用于c++进行http的访问,请求接收与发送数据,使用工具为winhttp第三方库。
WinSock 实现http协议
1.这个是一个win32 WinSock api 实现http协议.里面的类CSocketHttpImplement是主要的模块(如果要用就这个类移过去就行哈),大家可以用于正式的项目。这个再已经经过大量测试通过。 2.这个类的调用主要是public的函数。 3.vs2005编译过得哈,大家如果环境不同也许需要改一点点,这些网上都可以查到环境要怎么改!相信大家都能搞定!就这个例子有啥子问题的可以问我190658681 4.如果看不懂代码的,可以去了解哈http协议哈!或者直接用winnet去写下载.用WinSock api要复杂一些哈!
vc++ 开发的HTTP SERVER服务器
使用vc开发的http server服务器程序,可提供web的访问等服务功能。
用 VC++ 和 Winsock 实现与 HTTP 服务器通话
用 VC++ 和 Winsock 实现与 HTTP 服务器通话 Ji Hong 一、引 言 ---- Windows Socket API是一套开放的、支持多种协议的Windows下的网络编程接口,它包 括一个标准的 Berkeley Socket功能调用的集合,以及为Windows所作的重要扩充。 Windows Socket经过不断完善并在众 多公司的全力支持下,已成为Windows网络编
winsock API写的简单的HTTP服务器 有源码
winsock API写的简单的HTTP服务器 有源码 非常简陋,只支持单个客户端。 运行该程序后,打开浏览器进行测试。 预下载该服务器上的文件,请在浏览器地址栏按如下格式输入: 192.168.1.188/F:\文档.txt 即: 服务器IP + 斜杠 + 文件全路径名 注意:同意目录下的favicon.ico不要删了。 有问题联系:hastings1986@163.com
从VC++仿QQ源码解析即时通讯系统核心:网络模型、协议设计与状态管理
即时通讯(IM)系统是现代网络应用的核心组件,其基础建立在网络编程、应用层协议和客户端架构之上。理解IM系统,首先要掌握其底层的网络通信模型,从经典的阻塞式Socket多线程模型,到现代高性能服务器普遍采用的I/O多路复用技术,都是为了解决高并发下的连接管理问题。在应用层,自定义二进制协议通过紧凑的包结构(如包含起始标志、长度、命令字和校验和)来定义消息边界,有效解决了TCP粘包/拆包问题,这是实现高效、可靠数据传输的关键。这些技术的核心价值在于构建稳定、实时的通信链路,支撑从一对一聊天到群组消息、状态同步
PHP 对接建行生活订单推送接口
php对接建行订单推送
带隙基准源要点
要点: 负反馈>正反馈;电流镜匹配;双极型晶体管匹配;电阻匹配; 经过R0的电流????????????=????????????????−????????????????????????=∆????????????????????i_R0=(〖VBE〗_1-〖VBE〗_2)/R_0 =∆VBE/R_0 经过R1的电流????????????=i_R1= ????????????????????VBE/R_1 零温电流I = ∆????????????????????∆VBE/R_0 +
服务器无法通过http上传文件,用winsock通过http POST方式向服务器上传文件的有关问题...
当前位置:我的异常网» VB»用winsock通过http POST方式向服务器上传文件的有关用winsock通过http POST方式向服务器上传文件的有关问题www.myexceptions.net网友分享于:2015-08-26浏览:284次用winsock通过http POST方式向服务器上传文件的问题传输到服务器上的文件会出错,服务器端提示org.apache.commons...
Ubuntu 22.04下Nvidia显卡驱动安装全攻略:从PPA源到避坑指南
本文详细介绍了在Ubuntu 22.04系统下安装Nvidia显卡驱动的完整流程,包括PPA源的使用、旧驱动清理、安装后验证及常见问题解决方案。特别针对机器学习开发者和图形设计师,提供了从基础安装到性能调优的全方位指南,帮助用户避免常见安装陷阱并优化GPU性能。
C++ 用libcurl库进行http通讯网络编程
转自 http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html 目录索引: 一、LibCurl基本编程框架 二、一些基本的函数 三、curl_easy_setopt函数部分选项介绍 四、curl_easy_perform 函数说明(error 状态码) 五、libcurl使用的HTTP消息头 六、获
华为OD机试 - 比赛的冠亚季军(Python/JS/C/C++ 双机位C卷 100分)
有个运动员,他们的id为0到N-1,他们的实力由一组整数表示。他们之间进行比赛,需要决出冠亚军。比赛的规则是0号和1号比赛,2号和3号比赛,以此类推,每一轮,相邻的运动员进行比赛,获N (3\leq N< 10000)胜的进入下一轮,实力值大的获胜,实力值相等的情况,id小的情况下获胜,轮空的直接进入下一轮。(0 <= 实力值 <= 10000000000)。输入一行N个数字代表N的运动员的实力值。输出冠亚季军的id,用空格隔开。
AI技术在电商中的实际应用
人工智能、电商、推荐系统、个性化、机器学习、深度学习 1. 背景介绍 电子商务行业近年来发展迅速,用户数量不断增长,商品种类日益丰富。然而,随着市场竞争的加剧,电商平台面临着如何提升用户体验、提高转化率、挖掘潜在商机等一系列挑战。人工智能(AI)技术作为一种新兴技术,凭借其强大的数
HttpClient封装,get请求和post请求,文件下载和上传
public void sendRequest(RequestMethod method, String target, Map params, final HttpTaskListener listener) { IKLog.e("===url: " + method + ", " + target);// TODO 测试用打印URL IKLog.e("===url para
基于VisionMaster实现数据实时存储至MySQL (二)
摘要:之前的分享主要聚焦于简单的一维数据实时存储。但在做缺陷检测项目时,情况往往更加复杂:一张检测图像中可能同时存在多个缺陷,每个缺陷都有一组独立的核心参数(如质心、长短轴、面积等)。如何在 MySQL 中记录这些成组出现的缺陷数据,而不只是简单的单条记录?
1358



被折叠的 条评论
为什么被折叠?



