サーバーによる複数のクライアントの管理方法について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
shiro4ao
記事: 224
登録日時: 15年前
住所: 広島

サーバーによる複数のクライアントの管理方法について

#1

投稿記事 by shiro4ao » 14年前

こんばんは。
現在、クライアントサーバで通信するプログラムを書いています。

1つのサーバーにつき、複数のクライアントが接続して、
クライアント同士で相手を探し、そのあと会話するようにしたいと思います。

そのために、クライアント達の情報をサーバーにある構造体の配列で管理したいと思うのですが、
クライアントへの対応のための処理がクラスで書いてあります。

そのため、クライアントのクラスから、構造体の配列が見えないせいで管理できなくなりました。
出来れば、クライアントのクラスに全部、通信処理を書き込めたらいいのですが実現できずに困っています。

こういった場合の、基本的な手法などありますでしょうか?
抽象的な質問で申し訳ないですが、よろしくお願いします。

=====client.h======
class Client {
public・・・・
//構造体の配列をここで参照したいが、見えない
}
====================

======main.cpp=====
#include "client.h"
int main(){
//構造体の配列を宣言
}
====================

naohiro19
記事: 256
登録日時: 15年前
住所: 愛知県

Re: サーバーによる複数のクライアントの管理方法について

#2

投稿記事 by naohiro19 » 14年前

コンストラクタに配列を渡すのはどうでしょうか?

YuO
記事: 947
登録日時: 15年前
住所: 東京都世田谷区

Re: サーバーによる複数のクライアントの管理方法について

#3

投稿記事 by YuO » 14年前

クライアントはサーバーから得られる情報が全て,と割り切って作るしか無いですし,
サーバーはクライアントが必要になる情報を提供する必要があります。
また,クライアントとサーバーが同一の構造体等で情報を管理する必要もありません。
# そもそも,クライアントとサーバーでプログラム言語が別,というのもよくある話かと。

今回の場合だと,最終的にクライアント同士で直接会話をすることを仮定すると,クライアントが知らないといけないのは,
  • サーバーとの接続方法
    サーバーとのやりとりをクラス化するなりすることになると思います
  • 現在サーバーに接続しているクライアントの識別情報
    名称とIPでもいいですし,名称と一意ID(サーバーに再度問い合わせてIPを得る)でもよいです
  • 現在自分と接続状態のクライアントの情報
程度のはずです。

サーバーから取得したクライアント識別情報を元に,各クライアントが他のクライアント情報の配列等を構築すればよくなります。

アバター
shiro4ao
記事: 224
登録日時: 15年前
住所: 広島

Re: サーバーによる複数のクライアントの管理方法について

#4

投稿記事 by shiro4ao » 14年前

ご回答ありがとうございます。

>naohiro19さん
コンストラクタは使ったことがないですが、なんとか
サーバー側ではコンストラクタに入れて渡すようにしようと想います。

>YuOさん
クライアントの操作に必要な情報は全部サーバーで管理して、同期しなくていいように
作り変えようと思います。

なんとか方針が立ってきたので、作れるかもしれません。
これにて解決とさせて頂きます。

ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る