Partage
  • Partager sur Facebook
  • Partager sur Twitter

[VB .net] Aide sur les sockets

Sujet résolu
    28 juillet 2011 à 16:52:51

    Bonjour,
    J'essaye de faire un simple programme qui se connecte sur internet pour récupérer le code source d'une page, voici mon code :
    Imports System.Net.Sockets
    Imports System.Text
    
    Public Class Form1
    
        Dim receive As String
    
        Sub SendSocket(ByVal Ip As String, ByVal Port As Integer, ByVal Send As String, ByRef Receive As String)
    
            Dim Socket As New System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
            Dim SendByte(), ReceiveByte(Socket.ReceiveBufferSize) As Byte
    
            Try
    
                SendByte = Encoding.Default.GetBytes(Send)
                Socket.Connect(Ip, Port)
                Socket.Send(SendByte)
                Receive = ""
    
                Do
                    size = Socket.Receive(ReceiveByte)
                    Receive &= Encoding.Default.GetString(ReceiveByte)
                Loop While size > 0
    
                Socket.Close()
    
            Catch ex As Exception
                MsgBox(ex.Message, vbCritical, "Erreur")
    
            End Try
    
        End Sub
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            SendSocket("edras.fr", 80, "GET / HTTP/1.0" & vbCrLf & "Host: www.edras.fr" & vbCrLf & vbCrLf, receive)
            RichTextBox1.Text = receive
    
        End Sub
    
    End Class
    

    J'ai seulement créé un richtextbox.
    À l'exécution du programme, je réussis à envoyer les données au serveur et à en recevoir d'autre mais lors de l'affichage des données, un paquet seulement est affiché.
    J'ai réussi à les faire afficher en modifiant la ligne "Receive &= Encoding.ASCII.GetString(ReceiveByte)" par "RichTextBox1.Text &= Encoding.ASCII.GetString(ReceiveByte)" et en enlevant cette dernière ligne du form_load.
    Le problème c'est que je veux que ma fonction marche en stockant le reçu dans la variable "Receive"

    Merci pour votre aide, et si vous avez des suggestions pour améliorer mon code notamment au niveau de la boucle et de l'encodage n'hésitez pas ;)

    Edit : Résolu, voilà le code :


    Do
        size = Socket.Receive(ReceiveByte)
        Receive &= Encoding.Default.GetString(ReceiveByte, 0, size)
    Loop While size > 0
    

    Il fallait préciser ce qu'il fallait convertir dans le tableau
    • Partager sur Facebook
    • Partager sur Twitter

    [VB .net] Aide sur les sockets

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown