掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
CSocketのOnAcceptで接続を拒否するには? (ID:69050)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
オショウさん、シャノンさん、PATIOさん、 色々な意見をありがとうございました。 オショウさんの言うように一時的にshutdownしようかと考えてましたが、 http://msdn.microsoft.com/ja-jp/library/3ebyk84x(VS.80).aspx に、shutdown後再び使用してはいけないと書かれていました。 それにシャノンさんの言うようにAcceptするまで相手の情報がわからないのを忘れていました。 結局ご指摘の通り以下のようなコードで接続数で制限ができました。 ただShutDownがなくても自動的に切断されました。(自動変数だったためかと) std::set<CAsyncSocket*> Connects; void CSever::OnAccept(int nErrorCode) { CSocket::OnAccept(nErrorCode); if (Connects.size() < 2) { CAsyncSocket* sock = new CAsyncSocket(); Connects.insert(sock); CAsyncSocket::Accept(*sock); } else { CAsyncSocket sock; CAsyncSocket::Accept(sock); sock.ShutDown(both); } } やはりサーバはクライアントからのconnectはつないでみてから判断するものなのですね。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.