WebSocket ++服务器结束,但端口仍然在使用
问题描述:
目前,我通过关闭(或刷新)客户端浏览器选项卡来结束服务器。当在服务器上调用WebSocket关闭函数时,服务器停止监听,关闭所有连接等并退出。这里是代码: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);
}
在上面的代码片段中,我循环了所有“玩家”(连接的客户端)。 p->io
的使用是指websocketpp::connection_hdl
。
然而,当我再次运行服务器,我得到这个错误:
[info] asio listen error: system:98 (Address already in use)
我不得不等待几分钟之前,我可以再次使用的服务器。这既烦人又生产潜在危险。
任何想法可能会发生什么?
答
就像大卫说的那样,你知道你在做什么。然后使用websocketspp函数s-> set_reuse_addr(true)
将'SO_REUSEADDR'打入您喜欢的搜索引擎。 –
就像大卫说的那样,你知道你在做什么。然后使用websocketspp函数s-> set_reuse_addr(true) – guilleamodeo
@guilleamodeo谢谢!这工作。再加上这个答案,我会加入并接受它。 –