我目前ClientHandler
方法接收TcpClient
,开辟了一个NetStream
说客户端,并开始从它像这样拉取数据:使用TcpClient/TcpListener,接收未知数量的单独消息的最佳方法是什么?
try
{
//byte[] bytes = new byte[client.ReceiveBufferSize];
byte[] bytes = new byte[100];
int bytes_read = netstream.Read(bytes, 0, bytes.Length);
Console.WriteLine(DateTime.Now.ToString() + ": Bytes Read");
while (bytes_read > 0)
{
memstream.Write(bytes, 0, bytes_read);
bytes_read = netstream.Read(bytes, 0, bytes.Length);
if (memstream.Length > 255)
{
MemStreamRead(memstream);
memstream.Flush();
OkResponse(netstream);
}
}
}
catch (Exception e)
{
Console.WriteLine("No longer connected");
connected = false;
Console.WriteLine(e);
Console.WriteLine(e.StackTrace);
}
我已经可以得到的第一个消息出来的客户端,但我很难想出我将如何为新消息保持开放,并决定何时完成我目前的消息。
netstream.DataAvailable
似乎它可以工作,我假设它检测到netstream
不再获取更多数据,并返回false。但是,一旦有新数据可用,我该如何再次开始收听?
在此先感谢您的帮助!
使用流读取器的异步任务连续读取tcpclient的基本流对象 –