Pythonの標準ライブラリのみを用いて構築した、GUIベースのチャットアプリケーションです。
TCPソケット通信によるクライアント・サーバーモデルを採用し、threading モジュールを用いたマルチスレッド処理により、非同期でのメッセージ送受信を実現しています。
(ここに完成したアプリのスクリーンショット画像を貼り付ける)
- リアルタイム通信: TCPソケットを使用した信頼性の高いメッセージ交換。
- GUIインターフェース:
tkinterを使用し、直感的な操作が可能。 - マルチクライアント対応: サーバーはマルチスレッドで動作し、複数のクライアントからの同時接続を処理します。
- 非同期処理: 受信処理を別スレッド化することで、GUIのフリーズ(ブロッキング)を回避しています。
- Python 3.x
- Standard Libraries:
socket(Network)threading(Concurrency)tkinter(GUI)
リポジトリをクローンした後、以下の手順で実行してください。
まず、ホストとなるサーバーを立ち上げます。
python server.py別のターミナル(または別のPC)でクライアントを立ち上げます。複数起動可能です。
python client.pyユーザ名を入力して接続すると、チャットに参加できます。
本アプリケーションは、以下のようなアーキテクチャで動作しています。
- Server:
socket.bindとlistenで特定のポートを監視 ・クライアント接続ごとに新しいThreadを生成し、独立してメッセージを待ち受けます。 ・受信したメッセージは、接続中の全クライアントへブロードキャストされます。 - Client:
・メインスレッドでTkinter GUIの描画とユーザ入力(送信)を処理。
・サブスレッドでサーバーからのメッセージを常時
recvし、GUIを更新します。
・ユーザ入退室通知機能の実装 ・GUIデザインのモダン化(customtkinerなどの導入) ・プライベートメッセージ機能の追加 ・通信の暗号化(SSL/TLS)
・koki-bit
GitHubにアップロードする際、不要なファイル(キャッシュファイルなど)が含まれないように、.gitignoreという名前のファイルをリポジトリのルートに作り、以下を書いておきましょう。
# .gitignore
# Pythonのコンパイル済みキャッシュファイル
__pycache__/
*.py[cod]
# 環境設定ファイルやOSのファイル
.env
.DS_Store