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#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 50
    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
    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.

  3. #3
    Membre averti
    Inscrit en
    Février 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 50
    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
    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 ...

  5. #5
    Membre averti
    Inscrit en
    Février 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 50
    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
    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

+ 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