安全な通信のために.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 に残ります。
このデータを既に読んだことをクライアントに伝える方法はありますか?