2014-09-18 30 views
0

我正在使用libcurl与C++通过Internet向另一台主机(我的朋友的计算机)发送HTTP请求。现在,另一端使用Node.js脚本来接收并处理请求。 我已经尝试过我的电脑之间的本地网络上的代码(包括C++和Node),并且一切正常。这是代码,如果你想看看:C++ - 发出的请求未到达其他计算机

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++部分)在关闭之前需要一些时间,就好像它正在尝试连接。这是一种防火墙问题吗?我们试图禁用它,但没有任何改变。我们几乎完全是网络的新手,我们正试图进入。

如果有人能帮助我们,请提前致谢!

+1

'192.168.X.X'不可路由。这只是一个局域网地址。 – 2014-09-18 18:20:53

+0

是的,我改变了这个例子,但我们当然使用连接IP。我现在要改变它 – jndok 2014-09-18 18:21:41

+0

我看不到错误处理。你怎么知道出了什么问题...... – 2014-09-18 18:24:47

回答

1

您的朋友的家庭路由器需要知道如何处理来自互联网的端口7890上的连接请求。它需要配置为将该端口上的任何通信转发给朋友计算机的特定内部IP地址。

并非所有的家庭路由器都能够进行端口转发,并且许多制造商有不同的方式进入设置。

朋友的计算机上的任何软件防火墙也需要知道通过端口7890的通信是安全的。