2014-11-19 37 views
0

LANG: CПроверка порта UDP открыт уже в C

Как я могу проверить, если сокет UDP уже открыт, так что я могу увеличивать используемый порт и отправить на следующий сокет, у меня нет какой-либо подумайте, сколько сокетов потребуется серверу. Я также не могу использовать port 0, так как мне нужно начинать с определенного порта. Только решения, которые у меня есть сейчас, либо реализуют мою собственную очередь для отслеживания открытых портов, либо пытаются читать /proc/net/udp

Существует ли определенный API? также, если нет, можете ли вы представить пример кода, который будет отслеживать открытые порты, используемые моей программой?

ответ

0

Если порт уже используется, сбой произойдет. Если это не удается, вам нужно только увеличить порт, который вы пытаетесь использовать. Затем сохраните его, если вы хотите использовать следующий порт. При отказе возвращается -1. Кстати, вы используете Linux? Вы можете установить максимальный и минимальный номер порта, и когда порт, который вы хотите использовать, достигнет максимума, установите порт равным min (это самый простой способ). Другим методам будет нужна общая память или семафоры и блокировки.

+0

я уже реализована эта 'в то время (связывания (sockfdstr, (структура SOCKADDR *) & адр, SizeOf адр) <0) {' ' \t порт ++;' ' \t addr.sin_port = htons (порт) ; ' ' \t printf («Пробовать следующий порт% d \ n», порт); ' '} ''} ' , но я использовал другой сокет (TCP для других операций), поэтому я смутился и думал, что он не работает – Ash

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