VB NET Socket Recive in Byte Array

haydenw

Newcomer
Joined
Dec 18, 2011
Messages
3
Hello all,
I am new to xtremedotnettalk and this is my first thread.

I am trying to create a function in vb.net that sends a website header through a socket to the server and returns the response. This is my code.

Code:
    Public Function GetSiteResponse(ByVal IPEndpoint As IPEndPoint, ByVal client As Socket, ByVal header As String) As Byte()
        client.Connect(IPEndpoint)
        If client.Connected Then
            Dim sendbuffer As Byte() = Text.Encoding.ASCII.GetBytes(header)
            client.Send(sendbuffer, sendbuffer.Length, SocketFlags.None)

            Dim recievebytes As Byte() = New Byte() {}
            Do
                Dim recievebuffer(350) As Byte
                Dim bytesrecieved As Integer = client.Receive(recievebuffer, recievebuffer.Length, SocketFlags.None)
                Array.Resize(recievebytes, recievebytes.Length + bytesrecieved)
                Array.Copy(recievebuffer, 0, recievebytes, recievebytes.Length - bytesrecieved, bytesrecieved)
                If bytesrecieved < recievebuffer.Length Then Exit Do
            Loop
            Return recievebytes
        Else
            Return Nothing
        End If
    End Function

The code doesnt recieve the entire server response. What am i doing wrong?
Thanks in advance.
 
IIRC the .Receive method will read whatever response the server has sent so far, if you call it while the server is still streaming data then you will only get a partial result. You would need to keep looping until the call to .Receive returns 0 as this means there was no data lft to be read.

http://msdn.microsoft.com/en-us/library/26f591ax.aspx#Y1200 has an example of what would be needed.
 
Back
Top