2010-11-30 25 views
3

Je me demandais comment gérer une situation où vous avez réussi à connecter deux processus via un canal nommé (un serveur et un client), et soudainement (pour une raison quelconque) le processus serveur se termine.Envoi de données throgh NamedPipe lorsque le serveur est arrêté

Qu'advient-il du tuyau? Est-ce que ça ferme? Qu'advient-il des informations envoyées par le client au serveur? Est-ce que ça se perd? Comment le client peut savoir si le serveur est en panne?

All The Best,

Gil

+0

Si vous êtes vraiment inquiet à ce sujet, vous devriez envisager d'utiliser WCF avec Message Queue. –

Répondre

1

Si vous utilisez System.IO.Pipes et NamedPipeServerStream par exemple, vous obtiendrez IOException quand un tuyau est cassé ou déconnecté.

Lorsque vous utilisez NamedPipeClientStream pour la lecture des informations du serveur, je crois que le client attendrait jusqu'à ce qu'une connexion soit établie sur l'option alternative d'appel NamedPipeClientStream.Connect() vous pouvez utiliser NamedPipeClientStream.Connect(Int32) Timeout une connexion après une période prédéterminée. En dehors de cela, le StreamReader.ReadLine() est également capable de lancer IOException quand quelque chose ne va pas bien. Le NamedPipeClientStream.IsConnected serait un moyen simple de déterminer si le client est connecté avec succès au serveur ou s'il est déconnecté, fermé ou cassé.