掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
複数のコネクションを操作するには? (ID:56406)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
丁寧な回答をありがとうございます. >一般には、「Accept 専用スレッド」を作り、CServerSock はその中でひたすら Accept に専念するという方法になるのではないでしょうか。 >このサンプルは CServerSock 自体をいくつも持つことにより、1対多通信を行うというスタイルのようですが。 ということは,このサンプルを一般の形式で使用するには,CServerSock, CSubSock の作りを変えなくてはいけないということでよろしいでしょうか? このまま使用するとしたら,ダイアログの BOOL CReversiDlg::OnInitDialog() { : m_pServerSock = new CServerSock(this); m_pServerSock->Open(theApp.m_Port); : } の部分を複数回実行するわけですよね? この場合のOpen()の引数になるポートは全て別になるのでしょうか? とりあえず実行のテストは自分のPCのみで,クライアントはアドレスに“localhost”を指定しています. 今まで行ったことは BOOL CReversiDlg::OnInitDialog() : for(int i=0;i<10;i++){ client[i].m_pServerSock = new CServerSock(this); client[i].m_pServerSock->Open(theApp.m_Port); } : } として同じポートを使う(つもりで)実行してみました. 結果は,1つ目のクライアントの接続は正常にできるのですが,2つ目の接続でサーバがエラーを起こして落ちました. 次に BOOL CReversiDlg::OnInitDialog() : for(int i=0;i<10;i++){ client[i].m_pServerSock = new CServerSock(this); client[i].m_pServerSock->Open(theApp.m_Port+i); } : } とし,ポートを別にして接続させるつもりで書きました. 今度も1つ目の接続は成功.それ以降もどうやら通信は行われているようです. 今このページを見ている場所では確認が取れないので,確認が取れ次第書き込みたいと思います. ただ,コネクション確立後名前の交換をするようにしているんですが,後者の場合それが正しく行われず,クライアントはサーバの名前を知らないまま通信が行われてました.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.