HLW チャット ルーム - Linux C ネットワーク プログラミング テクノロジを使用して開発された複数人チャット ツール
インストールと展開
git clone https://github.com/fujie-xiyou/chat_room.git
次に、 chat_room.sql
データベースにインポートし、 config.json
最後に、 ./chat_room_srv
でエラーが報告されなければ、サーバーは正常に起動します。
次に、config.json でサーバー アドレスを変更し、最後に./chat_room_cli
変更します。
まずはアカウントを登録してください
デモビデオ
チャットルームのビデオデモ
プロジェクト概要
- このプロジェクトは、Linux C ネットワーク プログラミング技術を使用して開発されたキャラクター インターフェイス チャット ルームです。基本的な機能には、ユーザーの登録とログイン、友達の追加、プライベート チャット、グループ チャットの作成、グループ チャットへの友達の招待、グループ チャット、チャット記録の表示、およびファイル転送を待ちます。
プロジェクト設計
- このプロジェクトは C/S モデルに基づいて設計されており、クライアントとサーバーの 2 つの部分に分かれています。クライアントはサーバーに直接接続され、サーバーと双方向でデータを交換します。サーバーはクライアントからのメッセージを受信するために使用されます。それらをターゲット ユーザーに転送すると、すべてのデータの永続化作業もサーバー側で完了します。
- プロジェクトのコードは階層化された考え方で設計されており、クライアントはインターフェース層とビジネスロジック層(リクエスト層)で構成され、サーバーはビジネスロジック層と永続化層で構成されます。
- データベース設計
- このプロジェクトが開発されたとき、私はデータベース関連のコースを体系的に学習していませんでしたが、後にこのプロジェクトのデータベース設計を見直したところ、それが BC パラダイムに沿っていることがわかりました。
- プロジェクト データベースの例を図に示します。
- ファイル転送機能の設計 このプロジェクトのクライアントとサーバーはデータのやり取りに JSON を使用するため、ファイル転送の処理方法を簡単に説明します。
- 図に示すように、ユーザーが送信するファイル名を入力すると、システムは open() システム コールを使用してファイルを開き、次に read() システム コールを使用して指定されたバイトのファイルの内容を読み取ります。データ パケットのサイズ フィールドに読み取りの戻り値を記録し、base6 を使用してファイルの内容を読み取ります。 4. トランスコードし、結果をデータ パケットのデータ フィールドに記録し、データ パケットを受信者に送信します。読み取った戻り値のサイズに基づいて、すべてのファイルが送信されたかどうかを判断します。値が読み取りサイズ パラメーターより小さい場合は、ファイルを閉じます。それ以外の場合は、読み取り、トランスコード、送信を続行します。
- 受信機はファイルパッケージを受信後、data内のデータをバイナリにデコードし、データのトランスコード結果を格納するbuff内のデータをsizeの値に応じてファイルに追加します。