【问题标题】:WebSocket++ server ending, but port says still in useWebSocket++ 服务器结束,但端口说仍在使用中
【发布时间】:2017-12-13 14:46:33
【问题描述】:

目前,我通过关闭(或刷新)客户端浏览器选项卡来结束我的服务器。当服务端调用WebSocket关闭函数时,服务端停止监听,关闭所有连接等,退出。代码如下:

void onClose(server* s, websocketpp::connection_hdl hdl) {
    bool running = false;
    s->stop_listening ();
    for (vector<Player *>::iterator it = players.begin(); it != players.end(); ++it) {
        Player *p = *it;
        s->pause_reading(p->io);
        s->close(p->io, websocketpp::close::status::normal, "");
    }
    s->stop ();
    exit (0);
}

在上面的 sn-p 中,我正在遍历所有“玩家”(连接的客户端)。 p-&gt;io 的使用指的是websocketpp::connection_hdl

但是,当我再次运行服务器时,出现此错误:

[info] asio listen error: system:98 (Address already in use)

我必须等待几分钟才能再次使用服务器。这在生产中既烦人又具有潜在危险。

有什么想法吗?

【问题讨论】:

  • SO_REUSEADDR 打入您最喜欢的搜索引擎。
  • 照大卫所说的去做,这样你就知道自己在做什么。然后使用websocketspp函数s->set_reuse_addr(true)
  • @guilleamodeo 谢谢!那行得通。将其添加为答案,我会投票并接受它。
  • 很高兴。 :-)

标签: c++ websocket server port websocket++


【解决方案1】:

照大卫所说的去做,这样你就知道自己在做什么。然后使用websocketspp函数s->set_reuse_addr(true)

【讨论】:

    猜你喜欢
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 2014-09-07
    • 1970-01-01
    相关资源
    最近更新 更多