Сокеты
2. Если у меня есть Udp сокет, для которого автоматически выбирается свободный порт, то как про этот порт узнаеть клиенту на другом конце?
1. Есть ли какой-либо более красивый способ узнать, свободные порты, кроме как перебират их и пытаться повесить на них сокет?
2. Если у меня есть Udp сокет, для которого автоматически выбирается свободный порт, то как про этот порт узнаеть клиенту на другом конце?
1. Нет.
2. Клиент должен перебирать порты.
Клиент должен перебирать порты.
А как тогда он узнает, что присоединился именно к нужному серверу? Отправлять с сервера сообщение и ловить его на клиенте?
А как тогда он узнает, что присоединился именно к нужному серверу? Отправлять с сервера сообщение и ловить его на клиенте?
Троян=) отправляет на каждый порт, к которому смог приконнектиться секретное слово (читай пакет), если сервер ответил так, как надо - коннект есть. Ура.
А диапазон перебора - все значения unsigned short или можноо все-таки как-нибудь сжать этот список ?
А чего собственно ты сжать хочешь?
Ну теоретически ты можешь выкинуть из обсмотра 21, 80 и еще некотрое количество стандартизированных портов на которых живут официально известные программы - но по сравнению с 0xFFFF количество отброшеных портов будет ничтожно мало.
А если пишешь собственный клиент/сервер - вообще-то изначально нужно определиться - с местом их конкретной прописки. Какой смысл делать из них бомжей?
А диапазон перебора - все значения unsigned short или можноо все-таки как-нибудь сжать этот список ?
на http://www.iana.org/assignments/port-numbers
есть список "зарезервированных" портов
Или сделай алгоритм выбора порта не случайным, а по какомунибудь алгоритму так что бы ты мог в любое время рассчитать порт.
Только понту помоему нету, если есть файерволл он сразу зачечет, пусть то будет случайный порт или нет, а если узвер туп и не поставил фаер то можно хоть 31337 порт выбирать и пусть на нем все время висит, всеравно не заметит никто :))