На пассивный поиск каждый клиент в ответ может отсылать до пяти результатов, на активный - до десяти. При пассивном поиске команда отсылается клиенту через хаб, при активном - напрямую. Пассивность клиента определяется из параметра SU команды INF.
Возможные варианты режима пользователя, определяемого по INF: 1. Хаб режет SU в INF команде и режим пользователя не определен 2. Режим определен, пользователь может принимать только UDP пакеты 3. Режим определен, пользователь может принимать только TCP пакеты 4. Режим определен, пользователь может принимать и TCP и UDP пакеты
Возможные варианты поискового запроса: 1. Активный, рассылаемый всем 2. Пассивный, рассылаемый поддерживающим TCP или NATT
Согласно фразе:
Цитата
Пассивность клиента определяется из параметра SU команды INF.
которая мной не была найдена в официальной документации к протоколу, возникает неоднозначность в поведении клиентов. Скажите пожалуйста, как поведет себя Strong и FlyLink в каждом из случаев: 1. - 1. 1. - 2. 2. - 1. 2. - 2. 3. - 1. 3. - 2. 4. - 1. 4. - 2. Точнее сказать, как будет слать ответ, по TCP через хаб или напрямую по UDP? Спасибо
Автор: Setuper 29.6.2012, 9:43
Видимо не совсем корректно написано.
Цитата
Пассивность клиента определяется из параметра SU команды INF
Наверное лучше было написать так: "Активность клиента определяется из параметра SU команды INF" или так: "Пассивность клиента определяется отсутствием в параметре SU команды INF характеристик активного клиента (TCP4, UDP4, TCP6, UDP6)".
Функции определения режима из исходного кода flylink
Код
bool Identity::isTcpActive(const Client* c) const { if (c != NULL && user == ClientManager::getInstance()->getMe()) { return c->isActive(); // userlist should display our real mode } else { return (!user->isSet(User::NMDC)) ? !getIp().empty() && supports(AdcHub::TCP4_FEATURE) : !user->isSet(User::PASSIVE); } }
Не понятно поведение клиента при получении поискового запроса и необходимости отвечать на него, так сказать в "экзотических случаях". Не могли бы вы написать для каждой комбинации как флайлинк будет слать ответ, по TCP через хаб, или по UDP напрямую
Возможные варианты режима пользователя, определяемого по INF, на поисковый запрос которого необходимо ответить: 1. Хаб режет SU в INF команде и режим пользователя не определен 2. Пользователя, от которого пришел поисковый запрос, вообще нет на хабе и соответственно его режим не определен 3. Режим определен, пользователь может принимать только UDP пакеты 4. Режим определен, пользователь может принимать только TCP пакеты 5. Режим определен, пользователь может принимать и TCP и UDP пакеты
Возможные варианты поискового запроса: 1. Активный, рассылаемый всем 2. Пассивный, рассылаемый поддерживающим TCP или NATT
Всего 10 комбинаций: 1. - 1. 1. - 2. 2. - 1. 2. - 2. 3. - 1. 3. - 2. 4. - 1. 4. - 2. 5. - 1. 5. - 2. Подпишите их пожалуйста, как поведет себя в таких случаях флайлинк
Автор: Crecee 4.7.2012, 0:14
Я так понимаю согласно протоколу поведение DC клиентов в таких случаях не определено?