【问题标题】:Getting constant delay between TCP Socket data send C#在 TCP Socket 数据发送 C# 之间获得恒定延迟
【发布时间】:2013-04-11 10:38:02
【问题描述】:

我在 C# 2010 中有一个客户端-服务器应用程序。 在 TCP Socket 中,我为我的应用程序中所有连接的套接字(客户端-服务器)设置 Nodelay = True 和 SendBufferSize = 0。

我正在跟踪每个传入传出的数据包,并使用 streamwriter 将其写入日志文件,它的 autoflush 属性设置为 true。

我注意到一件事,有时在发送数据时 2 个数据包之间存在恒定延迟(15-16 毫秒)。 几次连续发送后,此延迟再次出现。

为什么会延迟?以及如何避免它....

查看图片...

http://s4.postimg.org/uoly38shp/Trace_1.png
http://s14.postimg.org/m4ab7oght/Trace_2.png

【问题讨论】:

    标签: c# sockets tcp


    【解决方案1】:

    如果您使用DateTime 跟踪您的表现,15 毫秒大约是提供的分辨率。试试Stopwatch,比较靠谱。

    【讨论】:

    • 为了编写跟踪,我只是在写时间来了解数据包何时从客户端套接字实际接收到。我正在寻找我的服务器中两个数据包处理事件之间的 GAP (14-16ms)。
    • 那是我的意思,您的时间来源可能导致了看似只有 15 毫秒的延迟。如果您使用更可靠的时间源,那么 15 毫秒的延迟可能不再存在。
    • 你的意思是记录这个数据包数据,我应该在“StreamWriter.WriteLine”中使用秒表而不是日期时间???
    • 这就是我的建议。事实证明我错了,这只是一个最好的猜测。
    • @Bill - 太好了。如果这有帮助,您仍然可以接受答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 2014-09-03
    相关资源
    最近更新 更多