我在win32(msvc 9.0)下移植linux应用程序,在最后完成它之后,我在简单的事情socket()
上遇到非默认行为。
#include <winsock2.h>
#include <ws2tcpip.h>
int main(int argc, char **argv)
{
int subsock;
if ((subsock = socket(PF_INET, SOCK_STREAM, 0)) < 0 ) {
printf("Failed to open socket (ret value = %d)\n", subsock);
}
}
每次打印Failed to open socket (ret value = -1)
。有什么问题以及如何在win32上打开socket?
答案 0 :(得分:3)
在后续套接字调用成功之前,您需要调用WSAStartup来初始化winsock。
WORD wVersionRequested;
WSADATA wsaData;
int err;
/* Use the MAKEWORD(lowbyte, highbyte) macro declared in Windef.h */
wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested, &wsaData)
if (err != 0)
{
YourError!
}
else
{
// success
}
更多详情:
http://msdn.microsoft.com/en-us/library/ms742213%28VS.85%29.aspx
请求版本2.2并完成它。