2010-01-12 9 views
1

Je suis confronté à un problème de connexion de socket wierd dans l'application .net windows. J'utilise socket de .net pour communiquer de façon asynchrone avec une base de données de cache intersystems héritée.

J'ai une valeur de délai spécifique dans l'application, lorsque le délai d'attente se produit, l'utilisateur est invité à rester connecté à l'application. Quand je dis rester connecté, la prise n'est pas réinitialisée.
Je définis le délai d'attente à 30 minutes et dis rester connecté pour le premier temps d'inactivité. Ensuite, lorsque je navigue dans l'application, cela fonctionne très bien. Si sans naviguer dans l'application et dire rester connecté la deuxième fois, et naviguer dans l'application, je reçois une erreur de connexion "hôte refusé" socket. Je peux supposer que la prise est terminée.

Mais la partie wierd est si je mets le délai d'attente de l'application à 10 minutes, alors aussi je reçois une erreur de socket deuxième fois. Quand je vérifie la propriété des prises connectées, c'est toujours vrai. Je ne suis pas attraper l'exception quand j'appelle la méthode d'envoi des sockets. Mais les données ne sont pas transmises depuis le socket. J'ai vérifié l'autre code .net. c'est bon. Ce problème se produit également rarement, seulement 1 fois sur 10. Toutes les suggestions seront grandement utiles.Erreur de connexion de socket

Répondre

2

Cela ressemble à un problème typique résultant de pare-feu ou d'autres paramètres TCP.
Les pare-feu peuvent déconnecter silencieusement la connexion si elle est inactive plus de x secondes. Comme le protocole TCP ne génère pas d'événement dans ce cas (similaire au simple retrait du câble réseau), il est fortement recommandé d'envoyer un message ping toutes les x secondes, afin que le pare-feu reste ouvert et que vous soyez sûr de être relié. Si le ping est manqué, le serveur déconnecte le client.

+0

BUt J'ai vérifié le pare-feu et il est éteint. Y a-t-il d'autres paramètres TCP qui peuvent avoir un effet? –

+0

Avid - Je ne parle pas du pare-feu sur votre machine - je parle des pare-feu/commutateurs d'entreprise dans le réseau de votre entreprise. Comme indiqué précédemment, il existe également d'autres raisons pour lesquelles vous devriez envisager d'utiliser un protocole ping: il est recommandé d'utiliser un socket de travail pour simplifier les choses. – weismat