J'ai une application C# qui fonctionne correctement depuis plusieurs années. Il se connecte via une socket TCP/IP à une machine qui m'envoie des exécutions de trade de stock. Récemment, j'ai essayé de le déployer sur certaines machines dans un nouveau centre de données se trouvant derrière un pare-feu matériel, et j'ai commencé à voir des déconnexions bizarres.Socket Dis-Connects à une extrémité, pare-feu?
Lorsqu'une déconnexion se produit, dans mon application (le côté client), je ne vois rien d'inhabituel sauf que je cesse de recevoir des données sur le socket. Wireshark confirme qu'aucune donnée n'atteint le socket et que le thread de réception de mon application bloque sur l'appel Receive() lorsque je l'arrête dans le débogueur. Le socket indique ESTABLISHED dans netstat.
Mais du côté serveur, il semble que mon client se déconnecte. En regardant leurs logs, il semble que le socket sur leur extrémité se termine généralement par (nRecvd = -1, errno = 104) ou (nRecvd = 0, errno = 11). (104 est la connexion réinitialisée par un pair).
La déconnexion ne semble se produire qu'après une période d'inactivité. J'ai résolu ceci pour l'instant en implémentant un battement de coeur entre mon client et leur serveur qui envoie juste un court message toutes les 20 secondes et obtient une réponse. Cela a provoqué la chute des disjoncteurs à 0 au cours des derniers jours. Au début, j'ai pensé que le pare-feu matériel était le problème. Cela provoquait l'arrêt du socket après l'activité. Mais la personne en charge du pare-feu prétend que le délai d'attente pour les connexions sur ce port (8887) est de 2160 minutes. Je cours Windows Server 2003 et .NET 3.5. Le serveur de trades est une machine linux (sles9 je crois bien que je ne suis pas sûr).
Des idées sur ce qui pourrait se passer? Que puis-je faire pour déboguer cela étant donné que je n'ai aucun accès aux journaux du pare-feu et aucune possibilité de changer le code sur le serveur de commerce?
Merci, Mike
Merci, je voulais juste vous assurer que j'étais sur la bonne voie avec l'hypothèse du pare-feu. Ils ne captureraient rien pour moi sur le chemin du pare-feu au serveur de commerce.À la fin, il s'est avéré être le pare-feu. Ils avaient débloqué le mauvais port malgré que je demande 10x pour confirmer le numéro de port. –