2014-09-18 2 views
0

Я использую libcurl с C++ для отправки 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' не является маршрутизируемым. Это только адрес локальной сети. –

+0

Да, я изменил это в примере, но мы используем IP-соединение, конечно. Я изменил это сейчас – jndok

+0

Я не вижу обработки ошибок. Как вы могли знать, что пошло не так ... –

ответ

1

Домашний маршрутизатор вашего друга должен знать, что делать с запросом соединения на порт 7890 из Интернета. Он должен быть настроен для перенаправления любой связи на этом порту на конкретный внутренний IP-адрес компьютера вашего друга.

Не все домашние маршрутизаторы способны осуществлять переадресацию портов, и многие производители имеют разные способы доступа к настройкам.

Любой программный брандмауэр на компьютере друга также должен знать, что связь через порт 7890 безопасна.

Смежные вопросы