私は wcf のようなアプリケーションを作成しています。クライアントは ID とパケット処理データを含むデータをサーバーに送信し、サーバーは同じ ID でメッセージを返信します。同じコンピューターでクライアントとサーバーをテストしています。サーバーとクライアントを一緒に接続するためにlocalhostを使用するのではなく、実際のIPアドレスを使用して、実際にはループバックの代わりにソケットを開きます(これは私が聞いたものです)。今、私は驚くべき応答時間、500(.05ms)-1000(.1ms) ティックを取得しますclient-> server-> client
:通信時間が大幅に増加し、250000 (25ms) から 350000 (35ms) までの時間になったのはなぜですか? デバッガーを使用して遅延を見つけようとしましたが、実際にはソケット通信で多くの遅延しか得られません
これはサーバーソケットの初期化です:
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse(LocalIpAddress), port);
Listener = new Socket(localEndPoint.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
Listener.Bind(localEndPoint);
Listener.LingerState = new LingerOption(false, 0);
Listener.Listen(0);
これはクライアント ソケットの初期化です。
ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
ClientSocket.ReceiveBufferSize = buffer.Length;
ClientSocket.LingerState = new LingerOption(false, 0);