Разница между TTL и поддерживать жизнь - PullRequest
2 голосов
/ 27 июля 2011

Может ли кто-нибудь сказать мне разницу между TTL и Keep alive в сокетах (C # Networking), а также Linger ... Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 27 июля 2011

TTL сообщает пакету, через сколько маршрутизаторов он может пройти, прежде чем сдаться, в то время как Keep Alive сообщает соединению, как долго он должен оставаться открытым без активности.

Из того, что я читал о Лингере, я не вижу разницы с поддержанием жизни, возможно, я что-то здесь упускаю.

РЕДАКТИРОВАТЬ: опция linger позволяет вам закрыть сокет, в то же время попросив его подождать некоторое время, чтобы убедиться, что данные все еще находятся на проводе; с этой страницы , мы читаем, что

В буфере исходящей сети могут оставаться данные, доступные после Вы закрываете сокет. Если вы хотите указать количество времени, которое Сокет попытается передать неотправленные данные после закрытия, создайте LingerOption с включенным параметром, установленным в true, и секундами параметр установлен на желаемое количество времени. Параметр секунд используется для указания того, как долго вы хотите, чтобы гнездо оставалось подключен до истечения времени ожидания. Если вы не хотите, чтобы гнездо осталось после закрытия на любой промежуток времени создайте LingerOption с включенным параметром, установленным в false. В этом случае сокет будет немедленно закройте и все неотправленные данные будут потеряны. После создания передать LingerOption для метода Socket.SetSocketOption. Если ты отправка и получение данных с помощью TcpClient, а затем передать LingerOption для метода TcpClient.LingerState.

1 голос
/ 27 июля 2011

Время жизни - это количество устройств (прыжков), которое может пересечь сетевой пакет (например, маршрутизаторы, коммутаторы и т. Д.). Время жизни - это время, в течение которого сокет остается открытым, когда данные не отправляются или не принимаются

...