Поиск доступного сетевого порта на машине - PullRequest
2 голосов
/ 02 июня 2010

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

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

1 Ответ

7 голосов
/ 02 июня 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...