2016-09-08 3 views
-2

Je travaille sur une application où je n'ai pas d'autre choix que de cibler .NET 2.0. Ceci est une application de prise en utilisant TcpClient et TcpListener, et je l'ai ouvert les ports nécessaires dans le pare-feu Windows (Windows 7.0.) D'un côté, j'utilise TcpClient.Connect() méthode pour établir une connexion, et la méthode TcpListener.Pending() à l'autre extrémité pour détecter la demande.C# et .NET 2.0: TcpListener.Pending() ne voit jamais la connexion entrante

Le problème que j'ai est que En attente() ne retourne jamais vrai à la fin du serveur. J'ai vérifié pour m'assurer que la méthode Start() a été appelée, etc., et qu'aucune erreur n'est renvoyée ou aucune exception n'est levée. Du côté client, j'utilise Connect(), Write(), Flush(), et Close() (qui sont tous des types de retour vides) dans un try/catch, et aucune exception ne se produit. Du point de vue du client, tout va bien. Le problème est que le serveur ne voit jamais la demande de connexion, donc les données du client pense qu'il n'envoie jamais sur le serveur. En raison de la nature extrêmement confidentielle du travail, je ne peux pas publier une liste des sources. Je me demande si, d'après cette description, quelqu'un peut suggérer quelques coupables possibles. Comme je l'ai dit, j'ai ouvert les ports dans le pare-feu. "Aucune connexion n'a pu être établie car la machine cible l'a refusée", mais après avoir résolu les problèmes de pare-feu, toutes les erreurs et exceptions ont disparu. , mais toujours pas de flux de données.

Je sais que c'est un dur sans listes de sources, mais si vous avez déjà vu ce genre de problème et que vous pouvez suggérer des endroits à regarder, je l'apprécierais beaucoup.

Merci.

+0

Comment Pending() est-il écrit côté serveur? Est-ce dans une boucle, ou comment et quand acceptez-vous la demande du client? –

+0

Il est toujours possible d'ajouter du code source à une question. Découpez la source dans un nouveau projet et reproduisez le problème ici. – Brandon

Répondre

-1

Peut-être qu'il existe une sorte de "liste blanche"? Peut-être que le serveur doit "Whitelist" le client?