我正在使用libcurl和C++通过互联网向另一台主机(我朋友的计算机)发送一个HTTP请求。现在,另一端使用Node.js脚本来接收和处理请求。我已经在我的计算机之间的本地网络上尝试了代码( C++和Node),一切工作正常。这是代码,如果你想看的话:
CURL *handle;
string response;
curl_global_init(CURL_GLOBAL_WIN32);
handle = curl_easy_init();
curl_easy_setopt(handle, CURLOPT_URL, "10.10.10.10:7890"); //<= IP:PORT of the remote host
curl_easy_setopt(handle, CURLOPT_POSTFIELDS, "This is my POST request data!!");
curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, write_to_string);
curl_easy_setopt(handle, CURLOPT_WRITEDATA, &response);
curl_easy_perform(handle);
curl_easy_cleanup(handle);
和Node.js代码:
var http = require("http");
var server = http.createServer(function(request, response) {
request.on('data', function(chunk) {
console.log("We got a connection!");
console.log("Received POST data:");
console.log(chunk.toString());
});
});
server.listen(7890);
console.log("Server is listening");
正如我所说的,在我的本地网络上,它工作得很好,但是为什么我的朋友没有收到请求?我注意到我的代码(C++部件)在关闭之前需要一些时间,就好像它正在尝试连接一样。这是防火墙的问题吗?我们已尝试禁用它,但没有任何变化。我们在网络方面几乎完全是新手,我们正在努力进入其中。
如果有人能帮助我们,提前感谢!
发布于 2014-09-19 02:30:37
您朋友的家庭路由器需要知道如何处理在端口7890上从internet请求的连接。需要将其配置为将该端口上的任何通信转发到您朋友计算机的特定内部IP地址。
并不是所有的家庭路由器都能进行端口转发,许多制造商都有不同的设置方法。
朋友计算机上的任何软件防火墙也需要知道端口7890上的通信是安全的。
https://stackoverflow.com/questions/25919710
复制相似问题