给你我的代码:
'从远程服务器接收数据时需要用到的状态对象:客户端套接字、用于接收数据的缓冲区、用于保存传入数据字符串的可变字符串
Public Class StateObject
    Public workSocket As Socket = Nothing ' 客户端套接字
    Public BufferSize As Integer = 256    ' 缓冲区大小.
    Public buffer(256) As Byte            '  用于接收数据的缓冲区.
    Public sb As New StringBuilder()      '用于保存传入数据字符串的可变字符串
End Class
'接收
    Private Shared Sub Receive(ByVal client As Socket)
        Try
            '状态对象实例化(SOCKET)
            Dim state As New StateObject()
            state.workSocket = client            '接收数据.
            client.BeginReceive(state.buffer, 0, state.BufferSize, 0, AddressOf ReceiveCallback, state)
        Catch e As Exception
            MessageBox.Show(e.ToString(), "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try
    End Sub
    '接收回调方法 ReceiveCallback 实现 AsyncCallback 委托。
    '它接收来自网络设备的数据并生成消息字符串,将来自网络的一个或多个数据字节读入数据缓冲区,
    '然后再次调用 BeginReceive 方法,直到客户端发送的数据完成为止。
    '从客户端读取所有数据后,ReceiveCallback 通过设置 ManualResetEvent sendDone 向应用程序线程发出数据完成的信号。
    Private Shared Sub ReceiveCallback(ByVal ar As IAsyncResult)
        Try
            '从状态对象获取当前套接字
            Dim state As StateObject = CType(ar.AsyncState, StateObject)
            Dim client As Socket = state.workSocket            '读取数据
            Dim bytesRead As Integer = client.EndReceive(ar)            If bytesRead > 0 Then
                '  存储已经接收到的数据.
                state.sb.Append(Encoding.ASCII.GetString(state.buffer, 0, _
                  bytesRead))                '   得到剩余数据.
                client.BeginReceive(state.buffer, 0, state.BufferSize, 0, _
                  AddressOf ReceiveCallback, state)
            Else
                '  所有数据都已收到后,将其写入可变字符串
                If state.sb.Length > 1 Then
                    response = state.sb.ToString()
                End If
                ' 将接收事件的状态设置为都已经接收
                receiveDone.Set()
            End If
        Catch e As Exception
            MessageBox.Show(e.ToString(), "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try
    End Sub