2013-07-08 113 views
0

我写了一个类似于应用程序的wcf,客户端发送一些数据到一个带有id和一些数据包处理数据的服务器,服务器发回一个带有相同id的消息,然后测试客户端和服务器在同一台计算机上,我不使用本地主机连接服务器和客户端在一起,但真正的IP地址,所以它会打开一个套接字,而不是回环(这是我听到的)。现在我得到惊人的响应时间,一个:client-> server-> client沟通的500(.05ms)-1000(.1ms)滴答,现在我想尝试从计算机到计算机,所以我运行客户端在另一个服务器上,但现在沟通的时间增加了ALOT,我现在得到的时间从250000(25ms)到350000(35ms),为什么会发生这种情况?我试着用调试器找到任何延误,但我真的只得到了很多的延迟在socket通信巨大的网络通信延迟

这是服务器套接字的initalisation:

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

这不仅仅是需要通过网络基础设施进行通信的附加延迟吗?我不完全确定在标准时间内250000个刻度是如何转化的,在这个时间内有多少毫秒? –

+0

@AdamHouldsworth我已经添加了毫秒的时间(1毫秒= 10000滴答)。是的,这也是我的想法,但35毫秒?它maby是发送的40个字节,并且我知道在本地计算机上测试时它通过网络进行通信。 – Jeffnl

+0

如果不知道两台计算机之间的拓扑结构和硬件,我不能说这个毫秒是否令人惊讶。然而,故事往往存在延迟。与其试图始终使其足够快以至于您的应用不需要担心它(很好瞄准,但不幸的是它可能是不现实的)相比,您最好预期它并与之合作。 –

回答

0

问题似乎财产以后做的连接调试器,每当我运行的程序与调试器附加我得到奇怪的和难以解释的延迟,当我运行的程序单独作为一个excecutable我没有得到任何延迟了如此之久。