You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用InetPton()函数出现无效IP地址错误的技术求助

Windows Socket编程InetPton调用错误解决

问题原因分析

你遇到的错误码10022(WSAEINVAL)是因为InetPton函数的第三个参数传入错误。当前代码中传递的是&servaddr.sin_addr.S_un.S_addr,不符合函数参数要求,导致参数无效,返回值0(实际是参数类型不匹配引发的错误,并非IP地址格式本身问题)。

代码修正

将InetPton的调用修改为:

int a = InetPton(AF_INET, IPADDRESS, &servaddr.sin_addr);

参数说明

InetPton函数的第三个参数需要传入指向in_addr结构体的指针,而非结构体内部的S_addr成员地址:

  • servaddr.sin_addr是in_addr类型的结构体,&servaddr.sin_addr完全符合函数要求的指针类型
  • 若传递&servaddr.sin_addr.S_un.S_addr,相当于传入unsigned long*类型指针,但函数期望的是struct in_addr*,类型不匹配直接触发无效参数错误

额外注意点

  • 确保IPADDRESS是合法的IPv4格式(如"192.168.1.1"),虽然当前问题核心是参数传递,但IP格式错误也会导致InetPton返回0
  • 调用WSAStartup初始化后,程序结束前记得调用WSACleanup()释放套接字资源
  • 你的HTTP请求格式不完整,正确的GET请求至少需要包含Host头部,否则服务器可能返回错误,示例修正:
    sprintf(sendl, "GET / HTTP/1.1\r\nHost: xxx.xxx.xx.xx\r\n\r\n");
    

内容的提问来源于stack exchange,提问作者NWA_fan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 08:33:28