谁能告诉我 TTL 和 Keep alive in sockets (C# Networking) 以及 Linger 之间的区别。在此先感谢。
2 回答
TTL 告诉数据包在放弃之前他可以通过多少个路由器,而 Keep Alive 告诉连接它必须在没有活动的情况下保持打开多长时间。
从我读到的关于 Linger 的内容中,我看不出与 keep-alive 有什么区别,我可能在这里遗漏了一些东西。
编辑: linger 选项允许您关闭套接字,同时告诉它等待一段时间以查看数据是否仍在网络上;从这个页面,我们读到了
关闭 Socket 后,传出网络缓冲区中可能仍有可用数据。如果要指定 Socket 在关闭后尝试传输未发送数据的时间量,请创建一个 LingerOption,并将 enabled 参数设置为 true,并将 seconds 参数设置为所需的时间量。seconds 参数用于指示您希望 Socket 在超时之前保持连接多长时间。如果您不希望 Socket 在关闭后保持连接任何时间长度,请创建一个 LingerOption 并将 enabled 参数设置为 false。在这种情况下,Socket 将立即关闭,任何未发送的数据都将丢失。创建后,将 LingerOption 传递给 Socket.SetSocketOption 方法。如果您使用 TcpClient 发送和接收数据,
生存时间是网络数据包可能通过的设备(跳数)数量(如路由器、交换机等) 保活时间是在没有数据发送或接收时套接字保持打开的时间