我正在开发一个点对点软件,它使用 .net 的 SslStream 进行安全通信。
我使用 BeginRead() 和 EndRead() 从流中异步读取数据。(不要太介意奇怪的回调方法。它来自我现在必须使用的框架)
while(Config.State < Config.State.Exit)
{
association.SslStream.BeginRead(
InputBuffer,
InputBufferOffset,
InputBuffer.Length - InputBufferOffset,
iarPort.Post,
null);
yield return Arbiter.Receive(false, iarPort, iar =>
{
try
{
bytesReceived = association.SslStream.EndRead(iar);
}
catch
{
bytesReceived = 0;
}
});
// process data
}
客户端将处理接收到的数据并重新开始读取。如果远程客户端还没有发送新数据,接收客户端将再次读取旧数据。所以数据被读取后仍保留在 SslStream 中。
有没有办法告诉客户他已经读取了这些数据?