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
[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.