7
votes

Un seul client peut se connecter à un tuyau nommé

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é: xxx

et une application client ouvrant le tuyau comme celui-ci: xxx

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 xxx

à la fois du serveur et de tous les clients exécutés sur la même machine. Des idées?

Merci beaucoup à l'avance!


0 commentaires

4 Réponses :


4
votes

Vous pouvez rechercher certaines des informations ici: Nombre de clients pouvant se connecter à un tuyau nommé

et ici dans msdn: http: // msdn.microsoft.com/en-us/library/aa365594%28vs.85%29.aspx

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.


0 commentaires

0
votes

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.

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.


0 commentaires

1
votes

Merci pour l'aide rapide.

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:

J'ai eu un rationniste entouré d'un autre à l'aide du bloc dans le bloc de NamedPipeserverStream affiché sur le côté serveur.

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.


1 commentaires

Donc, vous pouvez fermer la question))



0
votes

0 commentaires