Приложение, над которым я работаю, должно уметь прослушивать несколько номеров портов (сейчас 4).C/как прослушивать несколько портов UDP
if((sock_fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
perror("error: could not create UDP socket\n");
exit(EXIT_FAILURE);
}
bzero(&sock_addr, sizeof(sock_addr));
sock_addr.sin_family = AF_INET;
sock_addr.sin_port = htons(port1);
sock_addr.sin_addr.s_addr = inet_addr(INADDR_ANY);
if(bind(sock_fd, (struct sockaddr *) &sock_addr, sock_len) < 0) {
perror("error: could not bind UDP socket to AU\n");
exit(EXIT_FAILURE);
}
Или есть более элегантный способ сделать это: мне нужно создать сокет для каждого из этих портов, как делать? Также я прочитал о заявлении select()
, это было бы что-то, что я должен использовать? Причина, по которой я хочу слушать несколько портов, довольно проста, она должна идентифицировать приложение, с которым я общаюсь. Например. одно приложение на порт.
Заранее благодарим за ваши комментарии.
// UPDATE: Как настроить один сокет на порт?
Можете ли вы дать мне краткое введение в том, как настроить сокеты и их соответствующие порты? Всякий раз, когда я пытаюсь настроить один сокет на порт, я получаю ошибку ': Address уже в использовании'. – nyyrikki
Возможно, вы пытаетесь связать свой сокет с портом, который уже используется другим приложением. Подробности и примеры на C-сокетах см. Здесь: http://www.linuxhowtos.org/C_C++/socket.htm – fduff
Настройка SO_REUSEADDR также очень помогает в отношении использования портов - как после сбоя программы. – Walter