使用http_listener(C ++ REST SDK)无法使用localhost地址侦听特定端口号

时间:2016-09-30 22:31:59

标签: c++ casablanca

我使用C ++ REST SDK构建一个HTTP服务器,用于接收邮递员的请求,但如果我这样编码:

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

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

Postman可以在POST方法中使用http://localhost/io连接到它, 但如果我编码如下:

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

Postman无法使用http://localhost:6000/io和POST方法连接到它。 但如果我编码像http_listener listener(L"http://localhost/io:6000"); Postman可以使用POST方法在http://localhost/io:6000中与它连接。我怎样才能让http://localhost:6000/io为我的听众服务?我使用的另一个程序总是向http://localhost:6000/io发送http请求,所以我需要让我的服务器监听这个地址。

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

但是,当我将6000更改为任何其他端口号,如7000或8000时,如http_listener listener(L"http://localhost:7000")http_listener listener(L"http://localhost:7000/io"),它适用于我。我使用netstat -a -b检查6000是否已被其他程序占用,但6000是免费的。

1 个答案:

答案 0 :(得分: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));

我在C ++ MFC应用程序中使用http_listener。所以对你来说肯定会有所不同。如果您需要任何帮助处理程序来回答收到的请求,请不要犹豫告诉我! 真诚的,艾哈迈德。