【发布时间】:2014-07-04 17:57:58
【问题描述】:
在将其标记为冗余之前,请知道我已经尝试了很多在网络上发布的方法(包括堆栈溢出),但它们都不能满足我的需求。另请注意,我对编程世界很陌生,所以请原谅我滥用了技术术语。
现在我正在编写一个 C++ 程序,它计算来自用户计算机的一些数据(例如 IP 地址),然后我将 IP 地址发送到已经设置好的服务器。我通过 URL 执行此操作。所以例如,如果服务器在http://stack1234abcdz.com,并且用户的IP地址是 100.100.100.100 ,那么我会请求
http://stack1234abcdz.com/?ip="100.100.100.100
我尝试过 libcurl,它在一定程度上可以工作,但编译后,我需要 5 个 .dll 与 .exe 在同一目录中才能运行它,由于我的问题的一些可移植性,我无法拥有。
我也尝试过其他一些传统的套接字方法,但它们需要大量的库和 SDK,它们很难配置,而且经常让像我这样的新手不知所措。我需要做的事情非常简单(我什至不需要服务器发回任何东西,除了可能成功或失败的代码),因此我认为我不需要做这么少的事情。
我在 Windows 7(64 位)机器上使用 Visual Studio 2006,执行 C++。我不能使用较新的版本,因为提供给我的大多数其他代码都在 VS2006 中,它们不能很好地转移/转换到较新的版本。
我想我现在要问的是我接下来应该做什么。有没有办法让 libcurl 的可执行文件不使用 5 .dll?我在某个地方看到我必须做一些静态链接的东西,但它们不是很具体。
或者有没有更简单的方法来解决我忽略的问题? WinInet? CAtlHttpClientT?卡萨布兰卡?我不想安装和配置我还没有掌握的复杂库,尤其是考虑到我的问题的规模......
感谢您就此事提供任何帮助/意见/反馈,谢谢!
【问题讨论】:
-
是的,我已经看过那个页面了。然而,curlpp 处理起来很痛苦,每次尝试时我都会遇到一些缺少头文件的错误以及诸如此类的错误。我没有尝试过其他 API,主要是因为处理配置让我筋疲力尽(而且我使用它们的成功率通常很低。)
-
为什么不使用 posix socket (winsock) 打开一个到 80 端口的 tcp 连接,然后发送类似
GET /?ip="100.100.100.100 HTTP/1.0\r\n\r\n的东西?在 C 中打开一个套接字实际上是 10 行代码。 -
这个怎么样? stackoverflow.com/questions/22077802/… 不完全一样,因为他想用不同的查询字符串将它发送到不同的地方,但它应该是接近的。
-
不敢相信我没有找到 Jerry 链接的问题/答案。至于插座,我的上级说我不需要达到“插座”级别,所以我没有打扰,但我想我错了。我现在都在看。