在C中创建套接字时出错(Visual Studio 2017)

时间:2019-06-17 20:55:46

标签: c visual-studio sockets

我正在尝试做客户端/服务器作业。我使用Visual Studio 2017,并且已经更改了可以使用套接字(Windows Socket Programming in 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 个答案:

答案 0 :(得分:2)

三个问题:

  • 首先,您需要先致电WSAStartup()initialize Winsock,然后才能使用socket()

  • 第二,如文档所述,您需要将socket()INVALID_SOCKET的返回值进行比较。

  • 第三,perror()不适用于Winsock错误,如您的示例所示。 perror()查看errno,Winsock并未设置。使用WSAGetLastError()来获取失败的Winsock函数的错误代码,然后可以根据需要将其打印出来。