Ошибка при создании сокета в C (Visual Studio 2017) - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь сделать домашнее задание клиент / сервер. Я использую Visual Studio 2017 и уже изменил настройки проекта, чтобы я мог использовать сокеты ( Программирование Windows Socket в C ), но теперь моя консоль всегда говорит «ОШИБКА при создании сокета ...: нет ошибки»

Это мой текущий код:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <WinSock.h>

void PrintErrorExit(char *msg)
{
    perror(msg);
    exit(0);
}

int main()
{
    int randomNumber;
    int sock = 0;
    // Erzeuge das Socket - Verbindung über TCP/IP
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if (sock < 0)
        PrintErrorExit("ERROR while creating Socket ... "); 


}

1 Ответ

2 голосов
/ 18 июня 2019

Три проблемы:

  • Сначала вам нужно позвонить WSAStartup() на , инициализировать Winsock , прежде чем вы сможете использовать socket().

  • Во-вторых, вам нужно сравнить возвращаемое значение socket() с INVALID_SOCKET, как сказано в документации.

  • В-третьих, perror() не работает с ошибками Winsock, как показывает ваш пример.perror() смотрит на errno, который Winsock не устанавливает.Вместо этого используйте WSAGetLastError(), чтобы получить код ошибки сбойной функции Winsock, а затем распечатать его по мере необходимости.

...