Chat_IPv6
1.0.0
2 つのホスト間のテキスト チャット通信を実現します。通信は IPv6 環境で実行され、ログインおよび登録機能、ポイントツーポイント チャット、グループ チャットなどの機能が完了します。
UDP はコネクションレス型プロトコルであり、送信元と端末はデータを送信する前に接続を確立せず、アプリケーションからデータを取得してできるだけ早くネットワーク上にスローします。
通信プロトコル レベルで使用される主なメソッドは次のとおりです。
socket([family[, type[, proto]]])
bind(address: Union[_Address, bytes])
sendto(data, address,)
recvfrom(bufsize, flags,)
プログラミングのプロセスでは、ユーザーのユーザー名、パスワード、ステータス、ユーザーの IP アドレス、およびポートを保存するデータベースが必要です。データベースの選定にあたっては、データベースの移行などを容易にするため、SQLite3の軽量データベースを採用した。
関数名 | 関数 |
---|---|
初期化(自分自身) | データベースを作成して開くために使用されます |
select_all(自分) | データベースの対応するテーブル内のすべてのユーザー情報を取得するために使用されます。 |
register(自分自身、ユーザー名、パスワード、IP、ポート) | ユーザー情報を追加するために登録中に呼び出されます |
search_username(自分自身, ユーザー名) | ユーザー名に基づいてユーザー情報を検索する |
login_success(自分自身、ユーザー名、IP、ポート) | ログインに成功したら、データベース内のユーザー ステータス情報を変更します |
login_check(自分自身、ユーザー名、パスワード、IP、ポート) | ログイン時にユーザー名とパスワードが正しいかどうかを確認するために使用されます |
logout_success(自分自身, ユーザー名) | ユーザーがログアウトしたときにユーザーのステータスを変更する |
db_close(自分自身) | データベースを閉じる |
通信可能な 2 つのホスト上でコードが配置されているディレクトリを入力し、 python3 Client.py
とpython3 Server.py
をそれぞれ実行します。クライアントは必要に応じて複数のサーバーを開くことができますが、サーバーが開くことができるのは 1 つだけです。サーバーを起動すると、データベースが開きます。
プロンプトに従って選択を行って、さまざまな機能を実行します。ピアツーピア チャットでは、どちらかの当事者が END を送信してチャットを終了でき、もう一方の当事者はプロンプトに従って確認できます。グループ チャットの実装原理は似ており、テストを実行するプロセスも似ています。