我认为最好是解释一下情况,这样看来似乎不是太不可思议了。我想为我想让我的一些学生从事的项目发布一些入门代码。该项目涉及通过某些Internet网页抓取,因此,我想为他们提供一个URLStream类,该类将下载输入URL的html并将其作为字符串返回给他们。
问题是,我似乎找不到一种特别好的方法来以跨平台的方式处理网络(学生有mac / windows / linux计算机)。我知道Boost Asio和libCurl之类的库,但是使用这些库的问题是我无法强制所有学生下载它们。所以我的问题是双重的:
Boost.Asio确实不适合您的需求,因为它涉及巨大的Boost并构建至少一些非仅包含头文件的库。您仍然可以考虑可以在不使用 Boost 的情况下使用的Asio库,并且是仅标头的库,这样对您和您的学生来说就少了很多麻烦。由于它可能是最流行和最现代的网络 C++ 库,因此该练习可以为学生提供一些有用的经验。Asio 示例还有一个简单的 HTTP 客户端。
顺便说一句,您是否必须使用 C++ 来完成此作业?如果使用 Python 或提供开箱即用网络的类似语言,情况会简单得多。
Berkeley套接字API 是最常见的低级套接字 API。所有 POSIX 平台都支持它,这意味着 Linux 和 macOS 都支持它。
即使 Windows 也有它,但有一点小小的不同,因为套接字不像 POSIX 系统上那样是描述符。
直接使用套接字会导致更多的样板代码,但绝对可以使用它来制作一个仅支持简单GET请求的简单 HTTP 客户端。
有很多关于使用套接字的教程和参考资料。Beej 的网络编程指南似乎是一个流行的教程,其中应该有关于 Windows 所需的调整的注释。
| 归档时间: |
|
| 查看次数: |
2434 次 |
| 最近记录: |