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

VB.NET Discussion :

Probleme Sockets, Receive


Sujet :

VB.NET

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 115
    Par défaut Probleme Sockets, Receive
    Bonjour,

    Je developpe une application client, le serveur est en php... Enfin bref, je fais mes tests en local en passant par le port 9184.

    Voilà ma fonction (inspirée grandement d'une fonction sur msdn... donc ça devrait fonctionner quoi...) :

    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
     Private Shared Function SocketSendReceive(ByVal HName As String, ByVal HPort As Integer) As String
     
            Dim Header As String = "GET / HTTP/1.1" & vbCrLf & "Host: " & HName & vbCrLf & "Connection: Close" & vbCrLf & vbCrLf
            Dim BytesSent As [Byte]() = Encoding.ASCII.GetBytes(Header)
            Dim BytesReceived(255) As [Byte]
     
            Try
                Dim S As Socket = ConnectSocket(HName, HPort)
     
                If S Is Nothing Then
                    MsgBox("Connection failed")
                End If
     
                S.Send(BytesSent, BytesSent.Length, 0)
     
     
                Dim Bytes As Integer
     
                Dim Page As [String] = "Default HTML page on " & HName & " :" & vbCrLf
     
                Do
                    Bytes = S.Receive(BytesReceived, BytesReceived.Length, 0)
                    Page &= Encoding.ASCII.GetString(BytesReceived, 0, Bytes)
                Loop While Bytes > 0
     
                Return Page
            Catch ex As Exception
                MsgBox(ex.Message)
                Return ""
            End Try
        End Function
    Avec ça je suis censé envoyer un message au serveur, puis attendre une réponse de celui ci, or... je n'ai pas de réponse, il envoie bien le message mais apres le programme se met à tourner en boucle, et je suis obligé de le terminer, une fois que je le termine, le serveur affiche le Header que j'ai envoyé.

    Ca fait quelques jours que je suis dessus, je ne comprend pas d'ou ça peut venir, j'a refait plusieurs fonctions... ça ne change rien, j'ai toujours le meme probleme.

    Alors si quelqu'un pouvait m'éclairer, ce serait avec plaisir.

    Merci.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 115
    Par défaut
    Bon, bah j'aurais essayé ^^

  3. #3
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    En regardant sur msdn, le code est franchement different.
    Repart du debut peut etre.

    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
    ' Displays sending with a connected socket
    ' using the overload that takes a buffer.
    Public Shared Function SendReceiveTest1(ByVal server As Socket) As Integer 
        Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
        Dim bytes(255) As Byte
        Try
            ' Blocks until send returns.
            Dim i As Integer = server.Send(msg)
            Console.WriteLine("Sent {0} bytes.", i)
     
            ' Get reply from the server.
            i = server.Receive(bytes)
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        Catch e As SocketException
            Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
            Return e.ErrorCode
        End Try
        Return 0
     
    End Function 'SendReceiveTest1
    Et je te conseille le mettre default pour l'encodage.
    Et aussi de verifier l'etat du serveur avant.
    Et aussi d'aller regarder les logs directement sur le serveur, tu auras surement une piste a suivre.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 115
    Par défaut
    Bah j'utilise Socket Workbench qui simule très bien un serveur, et il dispose d'une console c'est fort appréciable

    Je vais essayer de repartir avec ce code oui... merci, je donne des nouvelles.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 115
    Par défaut
    Bon... même probleme... quoi que je fasse, j'ai l'application qui tourne en boucle quand j'utilise Receive... Je ne comprend pas, yen a pour qui cela fonctionne ?

    Rapel du probleme : Je cherche à recevoir l'information renvoyée par le serveur lors de la réception d'un message.

  6. #6
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    Mouaip les emulateurs faut faire attention.
    As tu essaye directement par reseau ou net ?

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 115
    Par défaut
    Salut,

    Oui j'ai essayé en local, j'ai un petit serveur php tout simple... il me fait la même chose.

Discussions similaires

  1. Socket.Receive, le clavier ne répond plus
    Par JMsme dans le forum C#
    Réponses: 5
    Dernier message: 15/02/2007, 09h43
  2. Probleme socket requete POST
    Par killuaster dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 15/10/2006, 15h15
  3. [Système] Probleme Socket Php
    Par Reaggaman dans le forum Langage
    Réponses: 4
    Dernier message: 01/03/2006, 18h55
  4. Problemes socket
    Par Proxius dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/07/2005, 14h25
  5. Probleme socket
    Par Spolix dans le forum Réseau
    Réponses: 6
    Dernier message: 03/10/2003, 06h50

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