gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:25 25 4
gpt4 key购买 nike

我正在 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 上打开套接字?

最佳答案

您需要先调用 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 版即可。

关于c - 如何在 MSVC 上通过 socket() 创建套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5453516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com