0
現在、クライアントのブラウザタブを閉じる(またはリフレッシュする)ことでサーバを終了します。 WebSocket close関数がサーバー上で呼び出されると、サーバーはリッスンを停止し、すべての接続を閉じ、終了します。ここでは、コードは次のようになります。上記のスニペットで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)
私は再びサーバーを使用する前に数分待たなければなりません。これは生産上迷惑で、潜在的に危険です。
何が起こっている可能性がありますか?
お気に入りの検索エンジンに 'SO_REUSEADDR'をパンチします。 –
ダビデが言ったようにして、あなたがしていることを知ってください。次に、websocketspp関数を使用します。s-> set_reuse_addr(true) – guilleamodeo
@guilleamodeoありがとう!それはうまくいった。それを答えとして加え、私はそれをアップホートして受け入れます。 –