次のような API を取得したいとします。
var Listner = new ServerSocket();
Listner.Bind(URL);
Listner.OnData((senderClient, ClientDataStream) => {/* ... */})
- また、OnData に渡されたデリゲートを、ソケット受信パフォーマンスに影響を与えない限定的なマルチスレッド タスク プールで実行することも必要です。
- 新しい senderClient タスクは、senderClient の現在のタスクが実行された場合にのみ、タスク プールの最後に到達します。
- もちろん、OnData を使用している間は、ソケットを介してクライアントにデータを書き戻すことができます。
ClientDataStream
length
現在のフレームを解析するときに、次の情報を提供することはできません。したがってClientDataStream
、非同期操作の形式で必要なだけ読み取る機能を提供する必要があります。
{
byte[] data = ClientDataStream.Read(5).Wait();
/* */
byte[] data = ClientDataStream.Read(someDinamicVarNWeGotFromThatFirstFiveBytes).Wait(); //...
}
タスクが待機している間、おそらく他のタスクが機能する可能性があります。
箱から出してすぐに使用できる.NetまたはOSSライブラリにそのようなスマートソケットサーバーはありますか?