每次客户端连接到我的服务器时,我都想记录客户端和服务器之间的传输时间 - 有没有一种无需 ping 客户端即可执行此操作的方法。我的服务器是用 C++ 编写的,并在 LAN TCP/IP 套接字上监听。我希望 TCP/IP 堆栈上有一些东西可以在每个客户端连接后使用。
更新
传输时间:客户端通过 WAN/LAN 等计算机网络连接到服务器所花费的毫秒数。与在 shell 中运行 ping client1.example.com
得到的结果基本相同。
最佳答案
没有完全可移植的方法来查找客户端建立连接所花费的时间,因为没有 API 可以查询内核以获取此信息。但是你有一些途径:
如果您可以在接口(interface)上进行捕获,则可以轻松测量从第一个 SYN 到 ACK 的时间。您应该能够在大多数系统上执行此操作。
在某些 Unix 系统上,您可以启用 SO_DEBUG 套接字选项,它可能会为您提供此信息。根据我的经验,SO_DEBUG 很难使用。
关于c++ - 来自 TCP/IP 堆栈的网络传输时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22269854/