Ошибка 98 функции bind() - "Address already in use"

Рейтинг: 0Ответов: 0Опубликовано: 21.08.2023

При запуске локального сервера в Linux появляется ошибка функции bind - "Address already in use". Для её исправления использовал setsockopt(SO_REUSEADDR), однако это никак не помогло. В чем может быть проблема?

Код сервера:

#include <iostream>
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
using namespace std;

int main() {
    sockaddr_un s_addr;
    s_addr.sun_family = AF_UNIX;
    strcpy(s_addr.sun_path, "server");

    int s_descriptor = socket(AF_UNIX, SOCK_STREAM, 0);

    const int par = 1;
    if (setsockopt(s_descriptor, SOL_SOCKET, SO_REUSEADDR, &par, sizeof(int)) < 0){
        cout << "Error setsockopt()";
        return -1;
    }

    if (bind(s_descriptor, (sockaddr *)&s_addr, sizeof(s_addr)) < 0) {
        cout << "Error with bind()\n";
        cout<<strerror(errno);
        return -2;
    }

    close(s_descriptor);
    return 0;
}

Ответы

Ответов пока нет.