Maxim Mirgorodsky писал(а):Нет. Соединение устанавливается за 4 попытки в следующей последовательности:
1) По локальному адресу в сторону получателя (определяется адрес сетевого интерфейса через который пользователь имеет доступ в сеть через которую подключен к серверу). в случае неудачи
2) По внешнему адресу в сторону получателя (адрес котрый определяет и отображает сервер). в случае неудачи
3) По локальному адресу в сторону отправителя. в случае неудачи
4) По внешнему адресу в сторону отправителя. в случае неудачи выводится сообщение что связь невозможна
Пункты 2 и 4 отбрасываются в случае если у пользователя установлен флаг прав "скрыть IP-адрес".
Уважаемый Максим, значит, Вы хотите сказать, что клиент при подключении к серверу, передает на последний все свои IP-адреса. Так или нет? Что-то я не замечал за ним такого. И в случае, после поднятия нового сетевого интерфейса на стороне клиента, будучи уже подключенным к серверу чата, он снова передает на сервер обновленные значения ВСЕХ своих IP? Это так? Если да, то Ваше описание выше справедливо. Если не так, то значит, Вы не поняли вопроса или я Вашего ответа. Так как сервер НИЧЕГО определить не может, если ему не будут сброшены клиентом эти данные. Сервер знает ТОЛЬКО адрес с которого пришел запрос на открытие сокета. И не может знать остальных, которые подняты на клиентской машине. Поэтому не могут знать этих данных и оба клиента которые устанавливают друг с другом связь, для передачи данных. Поскольку, как я понимаю, инициатором их соединения, является сервер.
P.S.
Если только перед началом передачи, на клиентской стороне, у вас не реализован протокол определения и передачи сетевых параметров друг другу, для выбора оптимальной среды передачи данных. Но в этом я сильно сомневаюсь.