Il s'agit d'un petit projet qui utilise CSHARP et la bibliothèque .NET (7.0). Ce programme vous permet d'établir plusieurs sockets Web à la fois (client -> serveur et serveur -> Client pris en charge). Ceci est destiné à s'exécuter sur des systèmes d'exploitation basés sur Linux qui prennent en charge .NET 7.0 (par exemple à l'aide du package dotnet ). Il est possible que cela fonctionne avec Windows, mais je n'ai pas essayé de le tester. Ce projet devrait également fonctionner avec .NET 8.0, mais je n'ai pas également testé cela.
Ce programme fonctionne comme une salle de discussion en tête-à-tête très simple. Lorsqu'il est connecté, le client et le serveur peuvent échanger des messages texte UTF-8 de base entre eux.
J'ai réalisé ce projet pour en savoir plus sur les prises Web dans CSHARP / .NET ainsi que la façon de gérer plusieurs sockets Web recevant / envoi des données simultanément via des méthodes asynchrones.
Voici une vidéo GIF présentant la fonctionnalité du programme. Nous n'utilisons pas SSL dans notre démonstration et établissons le client et le serveur à la fois localement en utilisant 127.0.0.1 (localhost).

La bibliothèque .NET 7.0 est nécessaire pour exécuter ce projet. Vous pouvez installer cette bibliothèque manuellement ou via un gestionnaire de packages si votre distribution Linux la prend en charge.
Sur les systèmes basés sur Ubuntu / Debian, vous pouvez installer DOTNET en utilisant les commandes ci-dessous.
# Typically this is only required for Debian.
wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt update
# Install .NET 7.0.
sudo apt install -y dotnet-sdk-7.0Si vous souhaitez construire et exécuter le projet. Vous pouvez utiliser la commande suivante.
dotnet runSi vous souhaitez uniquement créer le projet, vous pouvez utiliser la commande suivante.
dotnet build Assurez-vous que vous êtes dans le même répertoire que le fichier csharp-websockets.csproj lors de l'exécution des commandes ci-dessus.
Les arguments de ligne de commande suivants sont pris en charge.
./conf.json . Un fichier de configuration sur le système de fichiers est lu et analysé via la syntaxe JSON. Le chemin par défaut qu'il vérifie est ./conf.json . Cependant, il peut être modifié via l'option de ligne de commande de configuration répertoriée ci-dessus.
Voici les options de configuration. Veuillez garder à l'esprit que vous devrez supprimer les commentaires ( // ) si la copie ci-dessous. Je recommande de jeter un œil au fichier conf.ex.json si vous souhaitez copier la configuration sans aucune erreur.
{
// Whether to activate the listen server.
"listen": true,
// The host to listen on.
"listenHost": "127.0.0.1",
// The port to listen on.
"listenPort": 2222,
// Whether to listen with SSL.
"listenSsl": false,
// An array of startup client connections.
"startupConnections": [
{
// The startup connection host.
"host": "127.0.0.1",
// The startup connection port.
"port": 2223,
// Whether to use SSL with the startup connection.
"ssl": false
}
]
}
Lorsque vous démarrez le programme, vous serez invité avec les commandes suivantes que vous pouvez utiliser.
<ip> <port> <ssl> - Établissez une nouvelle connexion client à <ip> : <port> . <ssl> est facultatif et pour désactiver SSL, utilisez non .<idx> - SEND / Recevoir des messages pour la connexion client à index <idx> .<idx> - Envoyer / recevoir des messages pour le serveur d'écoute sur index <idx> .<idx> - Supprimez le client à index <idx> .<idx> - Supprimez le serveur sur index <idx> . Lorsque vous êtes connecté à une session de chat via les commandes cc et cs , vous pouvez envoyer le message q pour détacher la session de chat actuelle et revenir au menu principal.