首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WSAStringToAddress错误10022 /从控制台参数读取IPv6

WSAStringToAddress错误10022 /从控制台参数读取IPv6
EN

Stack Overflow用户
提问于 2013-01-17 07:18:00
回答 1查看 778关注 0票数 0

当我尝试连接到我的服务器时,我的客户机在函数WSAStringToAddress期间失败并出现错误10022,我认为问题是我试图从控制台参数中获取IPv6地址。对于我的本地主机地址,控制台参数的格式为::1。

下面是失败的函数:

代码语言:javascript
复制
WSAStringToAddress((LPWSTR)argv[1], AF_INET6, NULL, (SOCKADDR *)&server, &len)

下面是服务器和len变量的代码:

代码语言:javascript
复制
struct sockaddr_in6 server;
int len = sizeof(server);
memset( &server, 0, sizeof (server));
server.sin6_family = AF_INET6;
server.sin6_port = htons(PORT);

是啊,我希望有人能看到我犯的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-17 07:33:49

Error 10022WSAEINVAL,这意味着您传递的参数无效。这种情况下的问题是,在编译Unicode程序时,WSAStringToAddress接受一个宽字符字符串,而您向它传递的是一个转换为宽字符串的窄字符串。在插入类型转换之前,您收到的编译器错误应该已经发出了一个红色信号。

您有几个选项:

将您的应用程序更改为非Unicode(而不是将您的main函数改为wmain,该函数采用宽字符参数,并通过调用WSAStringToAddressA而不是使用MultiByteToWideChar将字符串从窄到宽来使用窄(ANSI)版本

在这种特殊情况下,我建议显式使用WSAStringToAddressA函数,因为使用宽字符版本不会为该函数提供任何额外的好处。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14369658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档