Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 读取异步网络流_Vb.net_Networking_Networkstream - Fatal编程技术网

Vb.net 读取异步网络流

Vb.net 读取异步网络流,vb.net,networking,networkstream,Vb.net,Networking,Networkstream,我已经做了大量的搜索,我相信我很接近,但我有问题,希望有人能帮助我 我有一个以太网条形码扫描仪,我需要经常听。我尝试过使用NetworkStream。在单独的线程中阅读,但后来发现异步网络流有一个“BeginRead”函数。问题是我根本无法让它工作 以下是我得到的代码: Public Class ScannerConnect Private client As TcpClient Property server As String Property port As Int

我已经做了大量的搜索,我相信我很接近,但我有问题,希望有人能帮助我

我有一个以太网条形码扫描仪,我需要经常听。我尝试过使用
NetworkStream
。在单独的线程中阅读,但后来发现异步网络流有一个“
BeginRead
”函数。问题是我根本无法让它工作

以下是我得到的代码:

Public Class ScannerConnect
    Private client As TcpClient
    Property server As String
    Property port As Int32 = 2005
    Private data As [Byte]()


    Sub Connect()
        Try
            client = New TcpClient(server, port)
        Catch e As ArgumentNullException
           Console.WriteLine("ArgumentNullException: {0}", e)
        Catch e As SocketException
            Console.WriteLine("SocketException: {0}", e)
        End Try
    End Sub 'Connect

    Sub ListenASync()
        stream = client.GetStream()
        data = New [Byte](256) {}
        stream.BeginRead(data, 0, data.Length, AddressOf ReadASync, stream)
    End Sub

    Private Sub ReadASync(ar As IAsyncResult)
        Dim buffer As Byte() = TryCast(ar.AsyncState, Byte())
        Dim bytesRead As Integer = stream.EndRead(ar)
        Dim message As String = Encoding.ASCII.GetString(buffer, 0, bytesRead)

        MsgBox(message)

        stream.BeginRead(buffer, 0, buffer.Length, AddressOf ReadASync, buffer)
    End Sub
End Class
它撞坏了 将消息变暗为
String=Encoding.ASCII.GetString(缓冲区,0,字节读取)
错误地
Array
不能为
null


知道我做错了什么吗?

您将
(a
网络流
)作为AsyncState参数传递给
BeginRead()


您不能在
EndRead
回调中将其转换为
Byte()

如果TryCast失败,那么
Byte
将不会为null/空,并且由于您没有检查它,因此将来会出现错误,请使用调试器找出null。