Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


UDP ソケットベース チャットプログラム

Python / UDP / Multi-User Session Chat


概要

本プログラムは UDP ソケットを利用した Python ベースのチャットプログラムです。 以下の 3 ファイルで構成されています:

  • server.py – ログインサーバーとして動作
  • client.py – クライアントユーザーとして動作
  • UserList.txt – オンラインユーザー一覧の保存ファイル

server.py はユーザーのログイン、オンラインユーザー一覧の要求を待機します。 client.py は ID を決定した後、次の動作が可能です:

  • オンラインユーザー一覧の要求
  • セッションの作成
  • 他ユーザーからの招待を待機

通信プロトコル仕様

ヘッダとボディに分かれた独自プロトコルを使用します。 以下は各メッセージ形式の詳細です。


USERLIST

クライアント → サーバー

現在オンラインのユーザー一覧を要求:

USERLIST
-

サーバー → クライアント

オンラインユーザー一覧を返却:

USERLIST
user1, (IPアドレス), (port #)
user2, (IPアドレス), (port #)
user3, (IPアドレス), (port #)
...
-
-

LOGIN

クライアントが初めて接続する際に使用:

LOGIN (ユーザーID)

サーバーは UserList.txtID, IP, port番号 を追記します。


INVITE

セッションに他のユーザーを招待するとき:

INVITE (自分のID),(自分のIP),(自分のport #)

招待された側は、 受け入れる(Join)拒否する かを選択できます。


JOIN

招待を承諾したユーザーから招待者に送信:

JOIN (自分のID)

招待者は自分のセッションユーザー一覧に参加者を追加します。


INFORM

招待者が新メンバーを追加後、セッション内全員へ通知するメッセージ。

INFORM
(参加者ID),(参加者IP),(参加者port #)
(参加者ID),(参加者IP),(参加者port #)
...
-

受信したユーザーは自身のセッションユーザー一覧に追加します。


EXIT

ユーザーがセッションを退出してプログラムを終了する時:

EXIT (自分のID)
  • セッション内の全ユーザーに送信される
  • 各クライアントは該当ユーザーを参加者リストから削除
  • サーバーはオンラインリストから削除

セッション内で使用可能なコマンド

コマンド 説明
!invite 他ユーザーをセッションに招待
!userlist 現在オンラインのユーザー一覧を取得
!exit セッション退出 & プログラム終了

ファイル構成

UDP-Chat
├── server.py
├── client.py
└── UserList.txt

デモ動画

以下のリンクから動作デモをご覧いただけます:

Video Label

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages