c - 使用代码块进行套接字编程

标签 c sockets

我正在尝试使用代码块进行套接字编程。

#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。我缺少什么帮助?

最佳答案

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

另外,请调用 WSACleanUp函数在最后。

来自链接WSAStartup :

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

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

还有:

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

关于c - 使用代码块进行套接字编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17140895/

相关文章:

silverlight - 如何找出我应该从套接字读取多少?

node.js - socket.io 客户端未连接到在 socket.io 中创建的 azure 服务器

javascript - 在 socket.io 中使用 jQuery

c - 从 Cuda 传输大量可变内存

c - 是否所有 C 编译器都允许函数返回结构?

从 <sys/stat.h> 调用 stat 失败并出现 "Value too large for defined data type"错误

使用 PIC 18 PWM 控制直流电机

无法在 MacOS 上从 shm_open 写入 fd

c - TCP 套接字 : Can read() still fail with EINTR when select() indicates there are data available?

c# - 触发事件时出现 NullReferenceException