我正在尝试使用代码块进行套接字编程。
#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/