C# 网络通信中的巨大延迟

C# 网络通信中的巨大延迟,c#,sockets,networking,delay,C#,Sockets,Networking,Delay,在编写类似wcf的应用程序的过程中,客户端向服务器发送带有id的数据和一些数据包处理数据,服务器向服务器发送带有相同id的消息,在同一台计算机上测试客户端和服务器,我不是用localhost把服务器和客户端连接在一起,而是用真实的ip地址,这样它实际上会打开一个套接字而不是一个环回(这是我听到的)。现在我得到了惊人的响应时间,500(.05毫秒)-1000(.1毫秒,用于:client->server->client通信,现在我想从一台计算机到另一台计算机尝试,所以我在一台计算机上运行客户端,在

在编写类似wcf的应用程序的过程中,客户端向服务器发送带有id的数据和一些数据包处理数据,服务器向服务器发送带有相同id的消息,在同一台计算机上测试客户端和服务器,我不是用localhost把服务器和客户端连接在一起,而是用真实的ip地址,这样它实际上会打开一个套接字而不是一个环回(这是我听到的)。现在我得到了惊人的响应时间,500(.05毫秒)-1000(.1毫秒,用于:
client->server->client
通信,现在我想从一台计算机到另一台计算机尝试,所以我在一台计算机上运行客户端,在另一台计算机上运行服务器,但现在通信时间增加了很多,我现在得到的时间从250000(25毫秒)到350000(35毫秒),为什么会发生这种情况?我尝试使用调试器来查找任何延迟,但我确实在套接字通信中只得到了很多延迟

这是服务器套接字的初始化:

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);

问题似乎与附加的调试器有关,每当我在附加了调试器的情况下运行程序时,我都会遇到奇怪的、无法解释的延迟,当我作为一个例外单独运行程序时,我不会遇到任何延迟。这不只是必须通过网络基础设施进行通信所增加的延迟吗?我不完全确定250000个滴答声在标准时间中转换成了什么,在这个时间中转换成了多少毫秒?@AdamHouldsworth我已经添加了以毫秒为单位的时间(1毫秒=10000个滴答声)。是的,我也是这么想的,但是35毫秒?它可能是发送的40个字节,我在本地计算机上测试时知道它确实通过网络进行通信。如果不知道两台计算机之间的拓扑结构和硬件,我就说不出这么多毫秒是否令人惊讶。然而,故事倾向于延迟的存在。你最好期待它并使用它,而不是总是试图让它足够快,你的应用程序不需要担心它(很好的目标,但不幸的是,它可能是不现实的)。@AdamHouldsworth,这是一个gig网络,除了我的两台计算机之外,它是未使用的,我刚刚意识到,如果它是一个小数据包,套接字可以等待数据,因此,它将等待发送数据包一段时间。我现在试着让它直接发送,我现在得到大约5000个滴答声(.5毫秒)的响应。我会努力改进它,我会在这里告诉它。