現場にいるクライアントからのさまざまなクライアント要求を処理する Windows サービスがあります。サーバー上に次のようなコードがあります。
server.BeginAcceptTcpClient(ae.End(), null);
yield return 1;
// socket connection has been established.
TcpClient client;
try {
client = server.EndAcceptTcpClient(ae.DequeueAsyncResult());
} catch (Exception e) {
Log.Error(e.ToString());
yield break;
}
using (client) {
// Set up another listener.
Start(server);
using (Stream stream = client.GetStream()) {
... All the work happens here and stream is returned to the client
}
}
これは、クライアントが request1 などのリクエストを送信し、reply1 を取得した場合には正常に機能しますが、クライアントがこの直後に request2 を送信した場合は、再度接続してから reply2 を受信する必要があります。場合によっては、この接続に最大 3 秒かかることがあります (3G クライアントを使用している場合)。
サーバーがリッスンし、接続が確立されている場合、複数のリクエストのストリームを介して受信/応答できる場所にしたいと思います。その後、クライアントから「終了」リクエストが送信された後、接続がドロップされます。これははるかに高速になると思いますが、これは可能ですか?
どんな助けでも大歓迎です。