通信対戦の簡易ゲームを作ろうと思うのですが、"サーバー側に複数のクライアントが接続する"という処理がどうもうまくいきません。・ω・
int NetHandle=GetNewAcceptNetWork(); で1対1の接続なら容易にできるのですが、これが1対多の場合にいろいろ苦戦します。。。。
(例
サーバー側に複数のクライアントがランダムに接続、サーバー側では接続してきたクライアントの数を表示。
まずこれだけの処理までできたらいいな、、、、と思います。どなたかアドバイスお願いします!!
通信対戦ゲームの初歩
Re:通信対戦ゲームの初歩
GetNewAcceptNetWork() のリファレンスを読む限り、「一番新しい」接続したハンドルを返すようなので、ループ内で接続の最大数までGetNewAcceptNetWork()を行えば良いのではないでしょうか?
例:
#define MAX_NETCOUNT 4
int tempNetHandle;
int netCount = 0;
int storedNetHandle[MAX_NETCOUNT] ;
while( !ProcessMessage() )
{
tempNetHandle = GetNewAcceptNetWork() ;
//ESC押すか、最大数(ここでは4)超えたらループ終了
if( CheckHitKey( KEY_INPUT_ESCAPE ) || netCount >= MAX_NETCOUNT ) break ;
if ( tempNetHandle != -1){
//新規接続有
storedNetHandle[netCount] = tempNetHandle;
netCount++;
}
}
printf("%d", netCount);
こんな感じでしょうか。
(自分はルーター環境下の為テストが出来ませんでしたので鵜呑みにはしないでください。飽くまでも解決法の例です。また、ネットワークを開く為の関数他は省いておりますので、ご自分で付け加えてください。)
例:
#define MAX_NETCOUNT 4
int tempNetHandle;
int netCount = 0;
int storedNetHandle[MAX_NETCOUNT] ;
while( !ProcessMessage() )
{
tempNetHandle = GetNewAcceptNetWork() ;
//ESC押すか、最大数(ここでは4)超えたらループ終了
if( CheckHitKey( KEY_INPUT_ESCAPE ) || netCount >= MAX_NETCOUNT ) break ;
if ( tempNetHandle != -1){
//新規接続有
storedNetHandle[netCount] = tempNetHandle;
netCount++;
}
}
printf("%d", netCount);
こんな感じでしょうか。
(自分はルーター環境下の為テストが出来ませんでしたので鵜呑みにはしないでください。飽くまでも解決法の例です。また、ネットワークを開く為の関数他は省いておりますので、ご自分で付け加えてください。)