2010-06-02 2 views
2

Я пытаюсь реализовать простой FTP-сервер (вариант протокола EFTP) в linux. Когда клиент подключается и отправляет команду PASV, сервер должен отвечать номером порта, поэтому клиент может подключиться к этому порту для передачи файла. Как сервер может выбрать номер порта? Нужно ли мне перебирать все порты с 1024 до 65535, пока не найду порт, к которому может привязать процесс?
Я знаю, что вызов bind() с 0, поскольку порт автоматически выбирает порт для привязки, но как узнать, какой порт был выбран?Поиск доступного сетевого порта на машине

Большое спасибо.

ответ

7

Вы позволили системе выбрать один, как вы упомянули, используя 0 в качестве номера порта, и вы вызываете getsockname(), чтобы вернуть его адрес, который включает номер порта.

Смежные вопросы