无法在Windows上创建套接字

8 c sockets networking winsock

我有一个非常尴尬的问题.以下代码不会在Windows上创建套接字; 它失败并显示错误消息.任何人都可以简单解释为什么会这样吗?如此简单的失败让我感到非常困惑和沮丧.谢谢.

int sock;
if( (sock = socket(AF_INET, SOCK_STREAM, 0)) < 0 )
{
    printf("error opening socket");
}
Run Code Online (Sandbox Code Playgroud)

编辑:此外,打印输出strerror(错误)只显示"没有错误".

Jer*_*fin 11

您需要WSAStartup()在任何其他套接字函数在Windows上运行之前调用(并且您应该WSACleanup()在完成后调用).


Ahm*_*vli 6

看下面的工作示例:

#include <Windows.h>
#include <stdio.h>

#pragma comment(lib,"ws2_32.lib")

int _cdecl main(){
   WSADATA Data;
   int socket; // or you can use SOCKET socket
   WSAStartup(MAKEWORD(2, 2), &Data); // 2.2 version
   socket = socket(AF_INET, SOCK_DGRAM, 0);
   if(udep_socket<0){
        printf("Error Creating Socket");
   }else{
        printf("Successfully Created Socket");
   }
   system("pause");
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

以下来源有助于理解: