【问题标题】:A way to resolve the time of packet created in socket tcp一种解决socket tcp中创建的数据包时间的方法
【发布时间】:2016-02-11 02:33:59
【问题描述】:

我在 C# 中使用套接字 TCP。

这里有一些代码:

System.Net.Sockets.Socket clientSocket;

...

clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

...
clientSocket.Receive( ...)

clientSocket 对象接收数据 - 服务器端有一个创建的数据包,由它决定何时发送。

有什么方法可以检索数据包的发送日期和时间以及创建时间?

另外,在使用 REST 等协议时,有什么方法可以检索日期+时间?

请提供一些示例代码。

谢谢:)

【问题讨论】:

  • 如果您控制数据包的内容,请在数据包本身中包含日期和时间。如果你不这样做,任何解决方案都可能是矫枉过正和低水平的。你会得到一个与接收时间极其相似的时间,并且在某种程度上毫无意义,因为它来自(或可能来自)另一台计算机的另一个时钟。
  • 我不控制数据包的内容。我认为有一个非常基本的实现,我可以解决该数据包背后的内容,包括时间戳。这是协议的一些基础知识,它对数据包进行编码并将其解码为可读的自助餐。解码时有校验和字节和一些额外的数据可以计算出来,但我该如何解决呢?

标签: c# sockets tcp


【解决方案1】:

这取决于在 TCP 上运行的协议,它将确定您是否能够确定此类日期时间信息。您需要根据您感兴趣的协议来解释 Receive() 返回的字节块。

示例代码见本教程: http://www.codeguru.com/csharp/csharp/cs_network/sockets/article.php/c8781/Asynchronous-Socket-Programming-in-C-Part-II.htm

REST 不是协议。 RESTful api 通常不包含发送每条消息的日期和时间,除非有人将其设计到他们的 API 中。

【讨论】:

    猜你喜欢
    • 2014-08-06
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 2011-01-15
    • 1970-01-01
    • 2022-10-19
    • 1970-01-01
    相关资源
    最近更新 更多