感谢这么多的回答。我需要重新我的问题......该设备作为TCP服务器功能在不断地发送数据,因为我不能修改任何TCP服务器参数是一个封闭的设备。我有接收和存储数据的地方可持续为了在此期间,我需要保持接收服务器数据处理,因为我不能失去任何部分服务器的消息。
然后,我有两件事要做:我必须接收和储存(例如数组)在同一时间,我需要读取接收到的数据进行处理,一个连续的数据流。服务器将永远不会停止发送数据,我要赶在发送的所有数据。
这是我问,如果有一个方式不取决于一个字节的缓冲区,TCP客户端,如果有一个可持续的方式获得的所有数据存储,数据不丢失任何数据流的一部分来接受她的原因。{ BR}
再次感谢!
-------------------------------------------------- --------
您好:
我在我的应用程序使用TCP客户端套接字。在这种情况下,我需要从设备(即作为TCP服务器工作),是可持续不指定发送的数据的长度,然后将它发送的邮件发送接收数据,它就像二进制数据流。我需要读取这些数据,并处理消息的某些特定的零件。最常见的引用,我发现接收的TCP数据流中读取的方法,但这种方法需要定义一个自定义大小的缓冲区。请阅读我的代码如下:
Imports System.IO
Imports System.Net.Sockets
Imports System.Threading
Imports System.Net
Imports System.Text
Public Class Write
Public Event DataRecieved(ByVal data As String)
Private Stm As Stream
Private tcpThd As Thread
Public Sub ConnectToServer()
Try
Dim tcpClnt As New TcpClient
tcpClnt.Connect(IPAddress.Parse("192.168.1.50"), 2111)
Stm = tcpClnt.GetStream()
tcpThd = New Thread(AddressOf ReadSocket)
tcpThd.Start()
Catch ex As Exception
MsgBox(ex.Message)
Exit Sub
End Try
End Sub
#Region "Private Methods"
Private Sub ReadSocket()
Dim Buffer() As Byte
While True
<b>Buffer = New Byte(4000) {}</b>
<b>Stm.Read(Buffer, 0, Buffer.Length)</b>
DataRecieved(Encoding.ASCII.GetString(Buffer))
End While
End Sub
#End Region
End Class
你自己看着办,如果我定义了一个4000字节的缓冲区,我读设备发送的数据只有4000字节,但保持设备发送数据的时间,我需要保持数据读取所有的时间太多,不只是4000字节...有没有办法读取数据,所有的时间和处理这些数据,它收到的那一刻吗?
感谢在前进。