如何在MSVC上通过socket()创建套接字?

时间:2011-03-28 00:26:09

标签: c visual-c++ sockets

我在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?

1 个答案:

答案 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并完成它。