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 :

Problème Envoi/reception de donnee par socket [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 9
    Par défaut Problème Envoi/reception de donnee par socket
    Bonjours ! !
    Je ne sais pas si je doit être content de vous revoir...

    Après voir résolu mon problème de la dernière fois j'avais continuer, j'avais établis un envoi/réception de texte par le socket, et abracadabra ! 30min après sa ne marche plus...je ne crois pas avoir toucher quelque chose, alors je vous demande de vérifier mon code, peut-être vous verrez l'erreur que je n’ai pas vu...

    Je demande connexion au serveur a partir du client
    Le serveur en écoute accepte la connexion
    Le client converti une phrase en Bytes et j’envoie
    Le serveur reçoit et retranscrit en String et l'affiche

    Je vous donne le code et après je vous explique ce que j'ai tester

    Parti Client :
    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
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim ipAddr As System.Net.IPAddress
            ipAddr = IPAddress.Parse("127.0.0.1")
            SocketClient = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
            SocketClient.BeginConnect(New IPEndPoint(ipAddr, 80), AddressOf connexionConnectCallback, SocketClient)
        End Sub
     
        Private Sub connexionConnectCallback(ByVal asyncResult As IAsyncResult)
            Dim SocketConnect As Boolean = False
            Dim Width As String
            Dim Height As String
            Try
                SocketClient.EndConnect(asyncResult)
                Width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width.ToString()
                Height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height.ToString()
     
                Dim msgwidth As Byte() = Encoding.UTF8.GetBytes(Width & "/")
                Dim envoiwidth As Integer = SocketClient.Send(msgwidth, 0, msgwidth.Length, SocketFlags.None)
     
                Dim msgheight As Byte() = Encoding.UTF8.GetBytes(Height & "/")
                Dim envoiheight As Integer = SocketClient.Send(msgheight, 0, msgheight.Length, SocketFlags.None)
     
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    Parti serveur:

    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
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim ipAddr As System.Net.IPAddress
            SocketServer = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
            ipAddr = IPAddress.Parse("127.0.0.1")
            SocketServer.Bind(New IPEndPoint(ipAddr, 80))
            SocketServer.Listen(5)
            Me.SocketServer.BeginAccept(AddressOf connexionCallback, Me.SocketServer)
        End Sub
     
        Private Sub connexionCallback(ByVal asyncResult As IAsyncResult)
            Dim SocketConnected As Boolean = Me.SocketServer.Connected
            Try
                Dim textlabel As String
                Dim bytes(255) As Byte
                SocketServer = SocketServer.EndAccept(asyncResult)
                SocketServer.Receive(bytes, 0, SocketServer.Available, SocketFlags.None)
                Dim DonneeRecu = Encoding.UTF8.GetString(bytes)
                Msgbox(DonneeRecu, 0, "test")
     
                Dim Labelmodif As Label
                Labelmodif = Label1
                textlabel = "Le client est connecté"
                majlabel(Labelmodif, textlabel)
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    Donc...Voici le code, donc j'ai tester ( a l'aide de msgbox juste après certaines opération )

    Coté client :
    - Après définition variable : Ok ( Width : XXX, Height : XXX )
    - Après cryptage en bytes : "L'argument 'Prompt' ne peut pas être convertie en type 'String'."

    Donc normalement coté client tous ce passe comme il faut...Mise a part la lecture du cryptage mais sa me parait normal...

    Coté serveur :
    - Après réception des bytes : Le même message qu'avant "L'argument 'Prompt' ne peut....." Encore normal
    - J'ai enregistrer la fonction receive dans une variable ( Elle renvoie le nombre d'octets reçu normalement )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim test As Integer = SocketServer.Receive(bytes, 0, SocketServer.Available, SocketFlags.None)
    Je test avec msgbox: 0
    - Après retranscription/décodage : Vide :s

    Donc l'erreur se démontre que du coté serveur mais je ne sais pas si c'est a la réception ou a l'envoi qu'est le problème..
    Merci d'avance du temps que vous m'accordé
    Je suis un peu perdu...

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Je viens de tester :

    Remplace:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SocketServer.Receive(bytes, 0, SocketServer.Available, SocketFlags.None)
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SocketServer.Receive(bytes)
    Ca marche chez moi

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 9
    Par défaut
    Génial merci a toi !
    Sa marche chez moi aussi

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

Discussions similaires

  1. Probleme reception de donnees par Socket
    Par herrs dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 10/07/2008, 11h29
  2. Réponses: 1
    Dernier message: 24/02/2008, 22h16
  3. Envoi d'un fichier par socket
    Par Aleksis dans le forum C++
    Réponses: 12
    Dernier message: 12/08/2006, 05h10
  4. Réponses: 3
    Dernier message: 06/03/2006, 10h36
  5. Ouverture de connexion et envoi d'un message par socket
    Par loleske dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/02/2005, 12h52

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