我正在尝试使用代码块进行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。我错过了什么帮助?
答案 0 :(得分:3)
您需要调用WSAStartup
函数来启动进程使用Winsock DLL。
另外,最后调用WSACleanUp
函数。
从链接WSAStartup:
WSAStartup
函数必须是第一个名为的Windows套接字函数
应用程序或DLL。它允许应用程序或DLL指定Windows的版本
需要套接字并检索特定Windows套接字实现的详细信息。
应用程序或DLL之后只能发出更多Windows套接字函数
已成功致电WSAStartup
。
上述链接也给出了一个很好的例子。
此外:
应用程序必须在WSACleanup
的每个成功时间调用WSAStartup
函数
函数被调用。这意味着,例如,如果应用程序调用{{1}}
三次,必须拨打WSAStartup
三次。前两次拨打WSACleanup
除了减少内部计数器外什么都没有;最后WSACleanup
调用该任务
为任务完成所有必要的资源释放。