0

我正在尝试使用代码块进行 Socket 编程。

#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <ws2tcpip.h>

int main()
{
    int sock;

    sock = socket(AF_INET6, SOCK_STREAM, 0);
    if(sock == -1)
    {
        printf("\n Socket not created %d\n", sock);
    }

    return 0;
}

创建套接字的行给了我-1。我缺少什么帮助?

4

1 回答 1

4

您需要调用WSAStartup函数来启动进程对 Winsock DLL 的使用。

另外,WSACleanUp最后调用函数。

从链接WSAStartup

WSAStartup函数必须是应用程序或 DLL 调用的第一个 Windows 套接字函数。它允许应用程序或 DLL 指定所需的 Windows 套接字版本并检索特定 Windows 套接字实现的详细信息。应用程序或 DLL 只能在成功调用后发出进一步的 Windows Sockets 函数WSAStartup

上面的链接也给出了一个很好的例子。

还:

WSACleanup每次成功调用该函数时,应用程序都必须调用该函数WSAStartup 。这意味着,例如,如果应用程序调用WSAStartup 3 次,则它必须调用WSACleanup3 次。前两个调用WSACleanup除了递减一个内部计数器之外什么都不做;任务的最终WSACleanup调用会为任务执行所有必要的资源释放。

于 2013-06-17T05:37:55.347 回答