J'apprends actuellement des pipes nommées dans Windows à l'aide de ASP.NET 3.5 et C #.
J'ai écrit un petit programme serveur qui crée un tuyau nommé: et une application client ouvrant le tuyau comme celui-ci: p> Ceci fonctionne Super tant que seul un client se connecte au tuyau. Il peut à la fois lire et écrire. Si j'essaie de connecter un second client, le code ne dépasse jamais la ligne p> à la fois du serveur et de tous les clients exécutés sur la même machine.
Des idées? P> Merci beaucoup à l'avance! P> p>
4 Réponses :
Vous pouvez rechercher certaines des informations ici:
Nombre de clients pouvant se connecter à un tuyau nommé a> p>
et ici dans msdn: http: // msdn.microsoft.com/en-us/library/aa365594%28vs.85%29.aspx P>
De ce que je comprends, vous devez créer une application multi-threadé. Le fil principal doit être responsable des connexions futures et chaque nouvelle connexion doit être lancée dans un nouveau thread. P>
Un vrai tuyau (celui de la banque Hardwre) a deux terminaisons. Je pense donc que le tuyau nommé ait également exactement deux points de terminaison, un pour le processus serveur et un pour le processus client. p>
Cependant, quelle est la réponse finale, je suggère d'examiner le WCF - il prend en charge la liaison de tuyau nette (et de nombreux autres comme Binary TCP, savon avec ou sans spécifications WS- * en modifiant la configuration. ) et gère l'activation du serveur et la multi-threading pour vous. .NET 3.5 est disponible, alors je vais certainement opter pour cela. P>
Merci pour l'aide rapide. P>
J'ai déjà géré le vrai traitement dans des threads séparés mais j'ai oublié de mentionner cela. Un collègue a trouvé le problème cependant: p>
J'ai eu un rationniste entouré d'un autre à l'aide du bloc dans le bloc de NamedPipeserverStream affiché sur le côté serveur. p>
Lorsque ce bloc a fini de fermer le streamerrisseur, il a également déconnecté le nomméPipeserverseam pour une raison quelconque. De plus, je n'enlaisais pas le pipestream.waitforconnection () dans une boucle. P>
Donc, vous pouvez fermer la question))
S'il vous plaît voir ma réponse ici pour Comment implémenter un serveur de conduite multi-filetés dans .NET. . p>