C - не может привязать сокет сервера - PullRequest
0 голосов
/ 11 ноября 2018

Я пишу локальное клиент-серверное приложение на C, работающее на 64-битной машине с Windows 7.

Моя проблема в том, что когда я вызываю bind () для сокета сервера, он всегда возвращает -1, и я не могу понять, почему. Я пытался использовать setsockopt с SO_REUSEADDR перед вызовом bind (), но в итоге ничего не сделал, поэтому я удалил его. Я также попытался изменить INADDR_ANY на inet_address ("127.0.0.1") и inet_address (ipv4 моего компьютера), но это тоже не сработало.

Вот код для настройки сокета сервера:

SOCKET serverSocket;

//AF_UNIX for process communication
serverSocket = socket(AF_UNIX, SOCK_STREAM, 0);

struct sockaddr_in serverAddress;

serverAddress.sin_family = AF_UNIX;
serverAddress.sin_port = htons(10509);
serverAddress.sin_addr.s_addr = INADDR_ANY;

// always returns -1, no matter what I do.
if (bind(serverSocket, (LPSOCKADDR) &serverAddress, sizeof(serverAddress)) == -1)
{
    int result = MessageBoxA(NULL, "Failed to set up server. Continue?", "Server Error", MB_YESNO | MB_SYSTEMMODAL);

    closesocket(serverSocket);

    if (result == IDNO)
        exit(1);
    else
        goto cleanup;
}

...

Почему это происходит? Что я могу сделать, чтобы это исправить?

1 Ответ

0 голосов
/ 11 ноября 2018

Сокеты AF_UNIX недоступны в Windows 7. Просто переключитесь на сокеты AF_INET на 127.0.0.1, если вы хотите обмениваться данными между процессами.

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