2016-09-30 4 views
0

Я использую C++ REST SDK для создания сервера HTTP, который используется для приема запросов от почтальона, но если я такой код:Не можете слушать на конкретном порту NUM с LOCALHOST адреса с http_listener (C++ REST SDK)

http_listener listener(L"http://localhost/io"); 
listener.open().wait(); 

listener.support(methods::POST, [](http_request req) { 
}); 

Почтальон может подключиться к нему с http://localhost/io в методе POST, Но если я код, как:

http_listener listener(L"http://localhost:6000/io"); 

Почтальон не может подключиться к нему с http://localhost:6000/io и методом POST. Но если я код как http_listener listener(L"http://localhost/io:6000"); Почтальон может связаться с ним в http://localhost/io:6000 с методом POST. Как я могу сделать http://localhost:6000/io работы для моего слушателя? Другая программа, с которой я работаю, всегда отправляет http-запрос http://localhost:6000/io, поэтому мне нужно, чтобы мой сервер прослушивал этот адрес.

http_listener listener(L"http://localhost:6000"); //doesn't work, too. 

Но когда я изменяю 6000 на любой другой порт NUM, как 7000 или 8000, как http_listener listener(L"http://localhost:7000") или http_listener listener(L"http://localhost:7000/io") это работает для меня. Я использую netstat -a -b, чтобы проверить, занят ли 6000 другой программой, но 6000 является бесплатным.

+1

Я верю, что «http: // localhost/iotresponse: 6000» «подключается к порту 80 (по умолчанию), а не 6000. – Pawel

+0

@Pawel как насчет« http: // localhost: 6000/iotresponse »? Он также подключается к порту 80? Требование для меня прослушивается «http: // localhost: 6000/iotresponse» – firstaccount

+0

Нет, 'http_listener (L" localhost: 6000 ")' должен прослушивать порт 6000. Я не знаю, почему порт 6000 не работает, пока другие порты работают. Я думал, что это потому, что что-то еще использует порт 6000, но вы сказали, что netstat не показал, что порт 6000 был взят, поэтому я не знаю ... – Pawel

ответ

0

Думаю, у меня есть ответ. Я прошел через это то же проблему, и я использовал другой неиспользуемый порт и другое использование функции «поддержки»:

http_listener listener(L"http://localhost:11369/"); 
listener->open().wait(); 
listener->configuration() ; 

listener->support(methods::GET, 
     std::tr1::bind(&CMFCApplication1Dlg::handle_get, 
      this, 
      std::tr1::placeholders::_1)); 
listener->support(methods::PUT, 
     std::tr1::bind(&CMFCApplication1Dlg::handle_put, 
      this, 
      std::tr1::placeholders::_1)); 
listener->support(methods::POST, 
     std::tr1::bind(&CMFCApplication1Dlg::handle_post, 
      this, 
      std::tr1::placeholders::_1)); 
listener->support(methods::DEL, 
     std::tr1::bind(&CMFCApplication1Dlg::handle_delete, 
      this, 
      std::tr1::placeholders::_1)); 

Я использую http_listener в приложении C++ MFC. Так что это будет для вас совершенно иначе. Если вам нужна помощь для обработчиков, чтобы отвечать на полученные запросы, не стесняйтесь говорить мне! С уважением, Ахмед.