使用C++从Web下载文件,而不使用Linux上的非标准库

6 c++ linux url

当我说非标准库时,我指的是像Boost,libCurl和其他任何可能比标准C++更容易做到这一点的东西.这样做的原因是我正在编写一个应用程序作为课程作业(该类专用于C++),我只需要使用标准库和函数.

我希望下载一个RSS文件,使用用户将提供的URL(我正在建立一个基本的RSS客户端),我面临的最大问题是我不知道如何让文件失效.一旦我超过该位,解析xml标签并显示内容将相对简单.我一直在寻找,我只找到了使用非标准库的解决方案,通常是libCurl.如果有人能够让我快速了解我应该关注的内容,那么我将不胜感激.

而且,如果你认为你在帮助我作弊,那你就不是.赋值是构建我们选择的应用程序,我们正在评估我们使用语言的各种功能(它必须包含这么多类,使用这些变量类型等).

mea*_*gar 9

查看Beej的网络编程指南,快速而精彩地介绍套接字.如果您不能使用任何非标准库,您唯一的选择是在端口80上手动连接并自己发出请求.

假设即使是初学者级的C++知识,那应该就是你所需要的.


Ste*_*sop 9

首先,仅使用标准C++无法完成.标准C++或标准C中没有网络接口.

如果您需要采取"自己动手"的方法,那么可能的意图是您将使用平台的套接字API.在linux的情况下,这是POSIX标准的一部分,而不是C++,并且可以从中获得<sys/socket.h>.

基本过程是:解析URL; 查找域的IP地址; 创建一个套接字; 连接插座; 写一个HTTP请求到套接字; 从套接字读回HTTP响应; 清理.

显然,HTTP库更方便,特别是因为HTTP下载可能比我上面描述的更复杂(例如,如果服务器响应重定向).几乎所有Linux发行版都将提供libcurl和/或curlwget程序.