我正在尝试做客户端/服务器作业。我使用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 ... ");
}
答案 0 :(得分:2)
三个问题:
首先,您需要先致电WSAStartup()
到initialize Winsock,然后才能使用socket()
。
第二,如文档所述,您需要将socket()
与INVALID_SOCKET
的返回值进行比较。
第三,perror()
不适用于Winsock错误,如您的示例所示。 perror()
查看errno
,Winsock并未设置。使用WSAGetLastError()
来获取失败的Winsock函数的错误代码,然后可以根据需要将其打印出来。