(主に埼玉大学生)本レポジトリ内のコードをコピーすることは禁止です。
Copyright 2025 batora All rights reserved.
送受信用のスレッドを用いて、最大クライアント数が10までの複数のクライアントが同時に接続できるチャットプログラム
GTK+3を用いたC言語でGUIを備えた簡易的なチャットアプリ
server.c: チャットプログラムにおけるサーバー側client.c: チャットプログラムにおけるクライアント側client_gui.c: チャットプログラムにおけるクライアント側のGUIcommands.h: チャットプログラムにおけるコマンド定義ファイルMakefile: コンパイル用のMakefilereadme.md: このファイル
- makeコマンドを実行して、サーバー、クライアント、GUIクライアントの実行ファイルを生成する。
make- サーバーを任意のポートで起動します。
./server <port>- 別のターミナルでクライアントを起動します。(多重起動可)
./client <host> <port>または、GUIクライアントを起動します。
./client_gui <host> <port>サーバに接続されました
あなたの名前は 'Client1' です。
利用可能なコマンドを表示するには ':help' を入力してください。
*** Client2 がチャットに参加しました ***
[Client1]> :name steve
名前を 'steve' に変更しました。
*** Client2 が alex に名前を変更しました ***
[steve]> hi
[alex]:(・∀・)ノ
[alex]: nice to meet you!
[steve]>
実行可能なコマンドの一覧は以下の通り
- :name <新しい名前> - 自分の名前を変更します。
- :whoami - 自分の名前を確認します。
- :members - サーバーに接続中の全クライアントの名前を確認します。
- :help - 使用可能なコマンドの一覧を表示します。
- :art <アート名> - 10種類のアスキーアートを表示します。
- quit - チャットを終了します。
- Makefileを用いて、サーバー、クライアント、GUIクライアントのコンパイルを一括で行えるようにした。
- 新しくクライアントが参加した際に、サーバーが参加中の全クライアントに参加メッセージを送信するようにした。
- クライアント参加時にサーバー側が初期名を割り当て、クライアント側にその名前を通知するようにした。
- 各メッセージに送信者の名前を表示するようにした。
- :name <新しい名前> コマンドを実装し、クライアントが自分の名前を変更できるようにした。
- :whoami コマンドを実装し、クライアントが自分の名前を確認できるようにした。
- :members コマンドを実装し、サーバーに接続中の全クライアントの名前を確認できるようにした。
- :help コマンドを実装し、使用可能なコマンドの一覧を表示できるようにした。
- :art <アート名> コマンドを実装し、10種類の様々なアスキーアートを表示できるようにした。
- 名前を変更した際に、サーバーが参加中の全クライアントに名前変更メッセージを送信するようにした。
- クライアントが切断する際に、サーバーが参加中の全クライアントに退出メッセージを送信するようにした。
- サーバーからのログ関係のメッセージラベルに色を付けて、視認性を向上させた。
- コマンド関連の処理をcommands.hにまとめ、コードの可読性を向上させた。(DRY原則)
- GTK+3を用いて、GUIクライアントを実装した。
- テキストビューにメッセージ内容を表示する関数を実装し、コードの可読性を向上させた。(DRY原則)
- GTK+3ではエスケープシーケンスが使用できないためメッセージ受信時にエスケープシーケンスを除去するようにした。
- GUIクライアント内でテキストボックスに入力したメッセージを送信ボタンまたはEnterキーで送信できるようにした。
- ウィンドウを閉じるボタンで通信を切断できるようにした。
- すべてのクライアントが切断されたときにサーバーが終了するようにした。