チャットプログラムのお作法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
大工

チャットプログラムのお作法

#1

投稿記事 by 大工 » 14年前

こんばんわ、
大工と申します。

ソケットプログラミングでチャットを作ってみようと仕様を考えてたんですが、
お作法としてよくわからないことが出てきたので質問させてください。

・チャット
1対1のチャットを想定していますが、1対Nのチャット、
つまり各ユーザの画面にはほかのユーザの発言がサーバから送られてくる方式はどのように設計すれば適切なのでしょうか?

ソケットプログラムに関しては初心者です、よろしくお願いします。

アバター
ゆーずぃ
記事: 62
登録日時: 14年前
住所: 埼玉県

Re: チャットプログラムのお作法

#2

投稿記事 by ゆーずぃ » 14年前

「設計」を考え方だと解釈して、とりあえずN:1について。



1つのグループでいいのであれば、

クライアント側の動き

1、クライアントはクライアントソフト立ち上げ時にサーバーへ自分のIPを送信。

2、好き勝手にサーバーへメッセージを送信。その際にも自分のIPを添える。

3、サーバーから送信されたメッセージは全て受けとる。


サーバー側の動き

1、サーバーは受け取ったIPを保持しておく。

2、メッセージ受信時は、添えられたIP以外のクライアント全てに受け取ったメッセージを送信。



どこまで詳細な設計を希望してるのかは分かりませんが、大まかにはこんなものでいいのではないでしょうか。メンバー・グループ管理やログイン・アウト処理を入れると少し面倒になりますが、その辺も必要でしょうか?

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

Re: チャットプログラムのお作法

#3

投稿記事 by shiro4ao » 14年前

複数のクライアントとのチャットなのでTCP通信だと想定します。
Windowsの場合は実装方法が幾つかあるようです
1.select関数を用いた同期通信
2.マルチスレッドによる通信
3.WSAAsyncSelect関数等によるイベントでの非同期通信

特徴は
1.イベントを用いないので、コンソールアプリケーションでも実装が比較的簡単です
2.イベントを用いません。、サーバー側のデータの同期が面倒になるかもしれません
3.ウィンドウアプリケーションであれば比較的簡単にイベントによる実装できます。

どのような仕様、目的にするかで、設計が変わるかと思います

閉鎖

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