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 :

[C#/Socket] Pourquoi le Receive de ma Socket retourne "Bad request" ?


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 50
    Points : 33
    Points
    33
    Par défaut [C#/Socket] Pourquoi le Receive de ma Socket retourne "Bad request" ?
    Bonjour.

    J'ai un code simple dans lequel une Socket se charge d'envoyer un message texte (Send) à la machine locale et de le recevoir (Receive) sur la même machine et puis de l'afficher sur la console.

    Voici le code :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    private static void testSocketSendReceive()
    {
       try
       {
        Encoding ASCII = Encoding.ASCII;
        String strRetPage = null;
     
        Socket s = connectSocket(Dns.GetHostName(), 80);
     
        if (s.Connected)
        {
            Byte [] Message = 
                     System.Text.Encoding.ASCII.GetBytes("Test envoi de données");
     
                     Byte[] RecvBytes = new Byte[256];
     
            int OctetsEnvoyes = 
                     s.Send(Message, 0, Message.Length, SocketFlags.None);
     
            Int32 bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
     
            strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
     
            Console.WriteLine(strRetPage);
            Console.ReadLine();
                }
     
        else
        {
        Console.WriteLine("Non connectée");
        }
     
    }
    catch (SocketException e)
    {
                 Console.WriteLine(e.Message);
        Console.ReadLine();
    }
    }
    Mon but est d'obtenir en sortie de console la phrase "Test envoi de données"; à la place, j'obtiens les lignes suivantes :

    HTTP/1.1 400 Bad Request
    Content-Type: text/html
    Date: Wed, 21 Jun 2006 12:55:39 GMT
    Connection: close
    Content-Length: 20

    <h1>Bad Request</h1>


    Ce n'est pas une Exception catchée mais c'est ce que le Receive de ma Socket retourne...!

    Avez vous une idée de l'erreur ?

    Merci.

  2. #2
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Oui tu essaie d'attaquer un port 80 donc un serveur web et ta requete n'est pas comprise par le serveur web qui la réceptionne.

    Deux solutions : soit tu veux communiquer avec le serveur et dans ce cas tu es bon pour te farcir les rfc si tu utilises les sockets.

    Soit tu veux t'envoyer ton message à un programme perso et dans ce cas il faut pas qu'il soit sur le port 80.
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 50
    Points : 33
    Points
    33
    Par défaut
    Le souci est que si je met un autre numéro de port, j'ai un message d'erreur me disant qu'il est impossible de se connecter car le serveur l'a expressement refusé!

    Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusée
    Je m'y connais quasiment pas en réseau, y a t il des numéros de port particuliers à utiliser ?

    Pour cet exemple, j'ai utiliser le 8000!

    Une idée ?

  4. #4
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Citation Envoyé par pocket
    Le souci est que si je met un autre numéro de port, j'ai un message d'erreur me disant qu'il est impossible de se connecter car le serveur l'a expressement refusé!
    ben il faut que tu es ton serveur qui écoute sur ce port aussi ... sinon ça peut pas fonctionner ...
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 50
    Points : 33
    Points
    33
    Par défaut
    Merci dev01 pour ta réponse.

    Je sais que je vais apparaitre nul mais j'ai besoin de savoir explicitement ce que tu entends par "ton serveur doit être à l'écoute sur ce port!"

    Que dois je faire pour que mon serveur soit "à l'écoute sur ce port" ?!

    Une information : Je travaille sur ma machine locale, mon but (pour le moment) c'est d'envoyer via la Socket un message simple (de style "ceci est un test" et de le recevoir. L'envoi et le reception se font tous les deux sur ma machine local...

    Merci pour ta patience et ton aide.

  6. #6
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Je te conseil la lecture de ces articles

    Utilisation des sockets en C#

    tutoriel sur les fonctions asynchrones

    Nouveauté réseau du Fx 2.0

    Avec ça tu vas être ok
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 50
    Points : 33
    Points
    33
    Par défaut
    Parfait... J'ai toute la nuit pour lire ça.

    Juste un dernier point : Me conseilles tu de passer à .NET 2.0 afin d'aboutir pour facilement ?

  8. #8
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Si tu fait des socket seulement alors ça na pas grand interet au niveau du réseau .
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  9. #9
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 50
    Points : 33
    Points
    33
    Par défaut
    Merci!

  10. #10
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 50
    Points : 33
    Points
    33
    Par défaut
    Les liens que tu m'as passé sont hyper intéressant!

    C'est un grand service de ta part, de la part de leurs auteurs et de toute l'équipe de Developpez.com.

    Merci à vous tous.

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

Discussions similaires

  1. Pourquoi est-ce que mes socket ne se ferment pas ?
    Par ram-0000 dans le forum Contribuez
    Réponses: 0
    Dernier message: 27/04/2013, 17h57
  2. [Sockets] Question sur Receive
    Par Etanne dans le forum C#
    Réponses: 15
    Dernier message: 18/07/2008, 20h07
  3. [socket] test si le descripteur de socket est valide
    Par Mokhtar BEN MESSAOUD dans le forum Réseau
    Réponses: 1
    Dernier message: 27/09/2007, 13h29
  4. Réponses: 7
    Dernier message: 18/09/2007, 21h59
  5. Réponses: 8
    Dernier message: 15/02/2007, 14h14

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