IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Socket fatal error


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Par défaut Socket fatal error
    Bonsoir, j'ai un petit probleme

    J;ai cree une petite application de "chat" en Visual C# 2005, avec un client et un serveur (dans des projets differents). Le probleme est que si j'essaie de connecter mon client avec BeginConnect(..) et mon serveur ne fait pas dans le meme temps du "listening" (bind, listen...), je recois le message suivant : "une requete d'envoie ou de reception des donnees n'a pas ete autorisee car le socket n'est pas connecte....", j'appuie sur "OK" et je recois une fenetre avec "WindowsApplication1" a rencontre un probleme et doit etre ferme.....etc (la fenetre avec le bouton "Ne pas Envoyer").. Je click sur "ne pas envoyer" et l'application se ferme.

    Qu'est-ce que je dois faire ? j'ai un "try" et un catch(SocketException), mais, il y a toujours cette fenetre avec "ne pas envoyer" qui apparait.

    Je veux faire de telle sorte que si le serveur n'est pas en fonction et que le client essaie de se connecter, je veux qu'il recoive un message d'erreur et qu'il puisse essayer plus tard, sans que le client se ferme. Est-ce possible ?

    Merci beaucoup

  2. #2
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Par défaut
    Personne ne peut me repondre svp ?

  3. #3
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Citation Envoyé par dex_tritus
    Je veux faire de telle sorte que si le serveur n'est pas en fonction et que le client essaie de se connecter, je veux qu'il recoive un message d'erreur et qu'il puisse essayer plus tard, sans que le client se ferme. Est-ce possible ?

    Merci beaucoup
    Impossible puisque si le serveur n'est pas en fonction, aucune connexion n'est possible donc je vois mal comment il va prevenir le client qu'il à planté !

    Sinon tu peux biaiser en créeant une page internet avec les infos sur le fonctionnement de ton serveur. Ensuite avant une connexion du client, tu vérifies sur ta page internet que le serveur est OK en récupérant les données de ta page (webbrowser et/ou HttpWebResponse). Dans le cas contraire, tu préviens le client que c'est DEAD

    Bonne prog
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Donne nous le code que tu utilises, ça sera plus facile de t'aider.
    Concernant le plantage, as tu vérifié en debogant l'exception qui était générée ?

    Malgré ce que dit Aspic, ce que tu veux faire est parfaitement possible. En effet avec un TryCatch autour du bloc qui effectue la connexion au serveur, tu dois pouvoir récupérer l'exception qui dit que la connexion a échoué, et ensuite afficher le message au client.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Citation Envoyé par SaumonAgile
    ce que tu veux faire est parfaitement possible. En effet avec un TryCatch autour du bloc qui effectue la connexion au serveur, tu dois pouvoir récupérer l'exception qui dit que la connexion a échoué, et ensuite afficher le message au client.
    Cela ne marche pas j'ai deja testé plusieurs fois. De plus il faut attendre 1 minute au moins avant de récupérer une erreur qui n'est pas forcement l'erreur de connexion...
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par Aspic
    Cela ne marche pas j'ai deja testé plusieurs fois. De plus il faut attendre 1 minute au moins avant de récupérer une erreur qui n'est pas forcement l'erreur de connexion...
    Evidemment qu'il faut attendre ! Tu ne peux pas déterminer que la connexion n'est pas possible tant que tu n'as pas attendu un certain temps. Il faut garder à l'esprit que c'est une communication réseau. Une connexion est déclarée impossible sur l'hôte lorsque ce dernier n'a pas répondu dans un délai déterminé.
    La destination ne va pas renvoyer un paquet disant que tu ne peux pas te connecter (pour des raisons de sécurité et de performance), c'est parce qu'elle n'en renvoie pas qu'au bout d'un certain temps le système arrête d'attendre et déclare la connexion impossible.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  7. #7
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Citation Envoyé par SaumonAgile
    Evidemment qu'il faut attendre ! Tu ne peux pas déterminer que la connexion n'est pas possible tant que tu n'as pas attendu un certain temps. Il faut garder à l'esprit que c'est une communication réseau. Une connexion est déclarée impossible sur l'hôte lorsque ce dernier n'a pas répondu dans un délai déterminé.
    La destination ne va pas renvoyer un paquet disant que tu ne peux pas te connecter (pour des raisons de sécurité et de performance), c'est parce qu'elle n'en renvoie pas qu'au bout d'un certain temps le système arrête d'attendre et déclare la connexion impossible.
    En tout cas chez moi ca ne marche pas

    J'attends vos tests, c'est sans doute moi qui m'y prends pas correctement.
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

Discussions similaires

  1. erreurs fatal error C1010 dans visual c++ 6.0
    Par screeminelle dans le forum MFC
    Réponses: 2
    Dernier message: 12/10/2005, 13h30
  2. Fatal error: Allowed memory size of...
    Par Webfab dans le forum Langage
    Réponses: 3
    Dernier message: 17/09/2005, 10h11
  3. Réponses: 17
    Dernier message: 28/07/2005, 08h20
  4. Fatal Error : OpenGL GLX extension not support
    Par kacedda dans le forum GLUT
    Réponses: 5
    Dernier message: 06/06/2005, 10h28
  5. class php5 - Fatal error: main() [function.main]
    Par tom261285 dans le forum Langage
    Réponses: 3
    Dernier message: 21/01/2005, 14h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo