Je développe une application serveur en C#. Les clients peuvent se connecter au serveur et faire diverses demandes. Actuellement, lorsqu'un client se connecte, je crée un nouveau thread pour gérer la ou les requêtes. J'utilise la classe TCPClient pour gérer les connexions client. Mon serveur fonctionne comme suit:Problème de blocage Read()
- client se connecter au serveur avec une demande
- demande serveur gère
- Server attend de voir si le client a d'autres demandes
- Si le client ne fait pas une autre demande dans certains délai d'attente, le serveur tue la connexion
Mon problème est le suivant:
Lorsque je lis à partir de l'objet NetworkStream que je reçois de la classe TCPClient, la méthode NetworkStream Read() ne bloque pas s'il n'y a pas de données disponibles. Lorsque le serveur atteint l'étape n ° 3, je voudrais définir un délai d'attente sur le NetworkStream et si le client ne fait plus de demandes pendant cette durée, le serveur devrait tuer la connexion lorsque cette exception de délai d'attente est levée. Lorsque mon serveur atteint l'étape 3, la méthode NetworkStream Read() ne bloque pas, quelle que soit la définition de la propriété ReadTimeout. Quelqu'un peut-il m'aider, ou proposer une meilleure façon de faire ce que je suis en train de faire.
Merci
Pouvez-vous utiliser à la place UDP et faire connexion? – Amy