Salle de discussion HLW - un outil de discussion multi-personnes développé à l'aide de la technologie de programmation réseau Linux C
Installation et déploiement
git clone https://github.com/fujie-xiyou/chat_room.git
Importez ensuite chat_room.sql
dans votre base de données et modifiez les informations de la base de données dans config.json
Enfin, si aucune erreur n'est signalée dans ./chat_room_srv
, le serveur démarrera avec succès.
Modifiez ensuite l'adresse du serveur dans config.json et enfin ./chat_room_cli
Veuillez d'abord créer un compte
Vidéo de démonstration
Démo vidéo du salon de discussion
Aperçu du projet
- Ce projet est une salle de discussion avec interface de personnage développée à l'aide de la technologie de programmation réseau Linux C. Les fonctions de base incluent l'enregistrement et la connexion des utilisateurs, l'ajout d'amis, la discussion privée, la création d'une discussion de groupe, l'invitation d'amis à rejoindre une discussion de groupe, une discussion de groupe, la visualisation des enregistrements de discussion et. transfert de fichiers attendez.
Conception du projet
- Ce projet est conçu sur la base du modèle C/S et est divisé en deux parties : client et serveur. Le client est directement connecté au serveur et échange des données avec le serveur dans les deux sens. Le serveur est utilisé pour recevoir les messages du client. et transmettez-les à l'utilisateur cible, tout le travail de persistance des données est également effectué côté serveur.
- Le code du projet est conçu à l'aide d'une idée en couches. Le client est composé de la couche d'interface et de la couche de logique métier (couche de requête), et le serveur est composé de la couche de logique métier et de la couche de persistance. La structure du code est la suivante :
- Conception de base de données
- Lorsque ce projet a été développé, je n'avais pas systématiquement étudié les cours liés aux bases de données, mais plus tard, lorsque j'ai examiné la conception de la base de données de ce projet, j'ai trouvé qu'il était conforme au paradigme BC.
- Quelques exemples de la base de données du projet sont présentés dans la figure
- Conception de la fonction de transfert de fichiers Étant donné que le client et le serveur de ce projet utilisent JSON pour l'interaction des données, un traitement spécial est requis pour le transfert de fichiers. Par conséquent, voici une brève introduction à la méthode de traitement du transfert de fichiers. Tout d'abord, l'image ci-dessus :
- Comme le montre la figure, une fois que l'utilisateur a entré le nom du fichier à envoyer, le système utilise l'appel système open() pour ouvrir le fichier, puis utilise l'appel système read() pour lire le contenu du fichier des octets spécifiés, et enregistre la valeur de retour de lecture dans la taille du champ du paquet de données, puis utilise base6 pour lire le contenu du fichier. 4. Transcodez, enregistrez le résultat dans le champ de données du paquet de données, puis envoyez le paquet de données au récepteur, puis jugez si tous les fichiers ont été envoyés en fonction de la taille de la valeur de retour lue si la lecture est renvoyée. la valeur est inférieure au paramètre de taille de lecture, puis fermez le fichier, sinon continuez la lecture, le transcodage et l'envoi.
- Après avoir reçu le package de fichiers, le récepteur décode les données en binaire, puis ajoute les données dans le buff qui stocke le résultat du transcodage des données au fichier en fonction de la valeur de la taille.