Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.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 TCP服务器正确接收数据_Vb.net_Tcp_Server - Fatal编程技术网

VB.NET TCP服务器正确接收数据

VB.NET TCP服务器正确接收数据,vb.net,tcp,server,Vb.net,Tcp,Server,我有一个多线程(带Backgroundworker)TCP服务器,它是由VB.NET开发的。当客户端和服务器在同一台机器上时,它工作得非常好。但当我从同一局域网的另一台计算机连接到服务器时,它的工作方式就不同了。在这种情况下,它工作良好,直到我开始连续发送消息(每秒3-4条消息)。我发送: 你好 你好 你好 你好 嗨 服务器会收到以下消息: 嗨 高原训练 嗨嗨 你好 等等 非常有趣的是,只有当客户机位于局域网的另一台计算机上时,才会发生此问题 这是我的听力练习: Sub listen_port6

我有一个多线程(带Backgroundworker)TCP服务器,它是由VB.NET开发的。当客户端和服务器在同一台机器上时,它工作得非常好。但当我从同一局域网的另一台计算机连接到服务器时,它的工作方式就不同了。在这种情况下,它工作良好,直到我开始连续发送消息(每秒3-4条消息)。我发送: 你好 你好 你好 你好 嗨

服务器会收到以下消息:

嗨 高原训练 嗨嗨 你好 等等

非常有趣的是,只有当客户机位于局域网的另一台计算机上时,才会发生此问题

这是我的听力练习:

Sub listen_port6(ByVal b As BackgroundWorker)
    Dim server As TcpListener
    server = Nothing
    Try

        Dim port As Int32 = 8085

        server = New TcpListener(IP, port)

        server.Start()

        Dim bytes(1024) As Byte
        Dim data As String = Nothing

        While True
            Dim client As Sockets.TcpClient = server.AcceptTcpClient()
            Dim ipend As Net.IPEndPoint = client.Client.RemoteEndPoint
            PublicIP = ""
            If Not ipend Is Nothing Then
                PublicIP = ipend.Address.ToString
            End If
            b.ReportProgress(1)
            Dim stream As NetworkStream = client.GetStream()

            Dim i As Int32
            Dim k As Short
            For k = 0 To 1024
                bytes(k) = 0
            Next
            i = stream.Read(bytes, 0, bytes.Length)

            While (i <> 0)
                data = ""
                data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
                Debug.Print(data)
                i = stream.Read(bytes, 0, bytes.Length)
            End While
            client.Close()
        End While
    Catch errore As Exception
        Error_Print(errore.Message)
    Finally
        server.Stop()
    End Try
End Sub
Sub-listen\u-port6(ByVal b作为后台工作人员)
作为TcpListener的Dim服务器
服务器=无
尝试
Dim端口为Int32=8085
服务器=新的TcpListener(IP,端口)
server.Start()
Dim字节(1024)作为字节
将数据变暗为字符串=无
虽然是真的
Dim client As Sockets.TcpClient=server.AcceptTcpClient()
将ipend设置为Net.IPEndPoint=client.client.RemoteEndPoint
PublicIP=“”
如果不是我的话,那我什么都不是
PublicIP=ipend.Address.ToString
如果结束
b、 报告进展(1)
作为NetworkStream=client.GetStream()的Dim流
Dim i As Int32
把k调短
对于k=0到1024
字节(k)=0
下一个
i=stream.Read(字节,0,字节.长度)
而(i 0)
data=“”
数据=System.Text.Encoding.ASCII.GetString(字节,0,i)
调试.打印(数据)
i=stream.Read(字节,0,字节.长度)
结束时
client.Close()
结束时
捕获错误作为异常
打印错误(错误消息)
最后
server.Stop()
结束尝试
端接头

提前感谢

BeginReceive方法能解决我的问题吗?我自己找到了答案。这是一篇关于我的问题的好文章。我希望有这样问题的人会有用: