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 - Ordinateur cible refuse la connexion


Sujet :

C#

  1. #1
    Membre régulier Avatar de deejay2221
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 98
    Points : 78
    Points
    78
    Par défaut Socket - Ordinateur cible refuse la connexion
    Bonjours.

    Je travail dans les sockets en ce moment et j'ai un gros souci. Je veux envoyer des tableaux de byte d'un ordinateur à un autre.

    Quand j'essaye de me connecter, j'ai un erreur :
    Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusée 192.168.123.108:5656

    Mes firewall sur les 2 ordis sont désactivés. Le seul port où je n'ai pas cet erreur est le port 80 (et le port 8080)

    m_host : variable membre pour l'IP à contacter
    m_port : variable membre pour le port
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
        public Byte[] Ecouter(int p_longueur)
            { 
                Socket _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
     
                _socket.Connect(new IPEndPoint(Dns.GetHostEntry(m_host).AddressList[0], m_port));
     
                Byte[] messageRecu = new Byte[p_longueur];
                int Resultat = _socket.Receive(messageRecu);
     
                return messageRecu;
            }
     
        public Int32 EnvoyerBytes(byte[] p_bytes)
            {
                Socket _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
     
                _socket.Connect(new IPEndPoint(Dns.GetHostEntry(m_host).AddressList[0], m_port));
     
                return _socket.Send(p_bytes, 0, p_bytes.Length, SocketFlags.None);
            }
    Je ne vois rien de louche dans ce code , en plus c'est exactement comme certains tutos sur Internet qui sont supposé bien fonctionner.

    Merci de votre aide

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Peut-être que c'est tout simplement parce qu'aucun programme n'écoute sur le port 5656 de l'ordinateur cible... tu peux vérifier ça en tapant dans la console de l'ordinateur cible :
    Code CMD : Sélectionner tout - Visualiser dans une fenêtre à part
    netstat -a | find "5656"

    Au fait, pour ce que tu veux faire, il y a aussi la classe TcpClient, plus simple à utiliser que les Sockets

  3. #3
    Membre régulier Avatar de deejay2221
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 98
    Points : 78
    Points
    78
    Par défaut
    Je vais essayé ces classes et je vous en reparle.
    Je viens par contre de frapper un autre problème je crois. Mon programme va en fait servir pour de l'aide à distance. Ici au bureau, on va débloquer le port 5656 sauf que les clients ne le feront pas... (et on ne commencera pas à aller les faire jouer dans leur routeur à chaque fois qu'on veut les aider). Y aura-t-il un problème au niveau du Firewall du routeur si je veux faire une communication dans les 2 sens?

    Si oui, comment on fait pour contourner ça? Par exemple, les logiciels de bittorrent utilisent sans doute un port bloqué par défaut, mais ils arrivent quand même à passer par dessus...

    Je suis perdu. Merci de votre aide.

  4. #4
    Membre régulier Avatar de deejay2221
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 98
    Points : 78
    Points
    78
    Par défaut
    La commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    netstat -a | find "5656"
    fonctionne uniquement sur le PC courant. Quand je démarre mon programme qui "écoute" sur le port, la commande netstat affiche le résultat sur le PC qui écoute mais n'affiche rien sur un autre PC qui est en réseau. Mon réseau fonctionne correctement, j'ai accès au documents partagés et je suis capable de faire un ping entre les deux ordinateurs.

    Je trouve ça très étrange.

    Pour mon post précédent, je me suis fait dire qu'une fois que le client se serait connecté, le port en question sera automatiquement débloqué par son routeur et le pont vers le bon IP se fera automatiquement. Ça dure pour le temps de la connexion. Il n'y a donc aucun problème. Sauf pour savoir quel est le IP dynamique/statique de sa maison... mais ça, si je ne trouve pas sur Google, je ferai un autre Post ici

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par deejay2221 Voir le message
    Je viens par contre de frapper un autre problème je crois. Mon programme va en fait servir pour de l'aide à distance. Ici au bureau, on va débloquer le port 5656 sauf que les clients ne le feront pas... (et on ne commencera pas à aller les faire jouer dans leur routeur à chaque fois qu'on veut les aider). Y aura-t-il un problème au niveau du Firewall du routeur si je veux faire une communication dans les 2 sens?
    Si la connexion s'effectue à l'initiative du client, ça n'a pas d'importance que le port soit ouvert ou non sur son routeur. Le firewall bloque seulement les connexions sortantes. Une fois la connexion établie, quel que soit l'initiateur de la connexion, la communication est bidirectionnelle.

    Citation Envoyé par deejay2221 Voir le message
    Si oui, comment on fait pour contourner ça? Par exemple, les logiciels de bittorrent utilisent sans doute un port bloqué par défaut, mais ils arrivent quand même à passer par dessus...
    Pareil. Si les ports BitTorrent sont bloqués, tu pourras te connecter à d'autres clients et échanger des données, mais aucun client ne pourras se connecter à toi.

    Citation Envoyé par deejay2221 Voir le message
    Quand je démarre mon programme qui "écoute" sur le port, la commande netstat affiche le résultat sur le PC qui écoute mais n'affiche rien sur un autre PC qui est en réseau.
    C'est normal, netstat indique seulement les ports en écoute sur le PC local, pas sur tout le réseau...

    Citation Envoyé par deejay2221 Voir le message
    Il n'y a donc aucun problème. Sauf pour savoir quel est le IP dynamique/statique de sa maison... mais ça, si je ne trouve pas sur Google, je ferai un autre Post ici
    Si c'est le client qui initie la connexion, tu n'as pas besoin de connaître son adresse. Par contre lui doit connaître celle du serveur bien sûr...

  6. #6
    Membre régulier Avatar de deejay2221
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 98
    Points : 78
    Points
    78
    Par défaut
    Pour répondre à ma question initiale, pour ceux qui veulent savoir, j'ai dû passer par Internet pour arriver à utiliser les ports. On dirait que l'utilisation de ports à l'interne dans mon propre réseau, ça ne fonctionne pas. J'ai alors fait un appel au IP externe, en prenant soin de débloquer le port dans mon routeur et de faire une redirection vers mon PC.

    De cette façon je n'ai aucun problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/02/2010, 19h29
  2. Refus de connexion aléatoire
    Par isabelle b dans le forum Sécurité
    Réponses: 46
    Dernier message: 17/12/2008, 19h49
  3. Réponses: 7
    Dernier message: 21/01/2008, 20h19
  4. Iptables pour refuser les connexions ssh sortantes
    Par NeilaK dans le forum Sécurité
    Réponses: 13
    Dernier message: 26/08/2006, 13h29
  5. Refus de connexion au lancement...
    Par patbeautifulday1 dans le forum XMLRAD
    Réponses: 1
    Dernier message: 17/05/2006, 12h26

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