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

WinSock2无法连接简易服务器,出现10038错误求助

Windows网络编程10038错误(WSAENOTSOCK)排查与修复

10038错误对应WSAENOTSOCK,含义是你尝试对一个非套接字对象执行套接字操作。

问题根源

你的代码中,创建套接字的if语句存在运算符优先级错误:

if (connect_socket = socket(AF_INET, SOCK_STREAM, 0) == INVALID_SOCKET) {

由于==的优先级高于=,这段代码会先执行socket(...) == INVALID_SOCKET,得到布尔值(0或1),再将该值赋值给connect_socket。这导致connect_socket并不是socket()返回的有效套接字句柄,而是一个普通整数,后续调用connect()时自然触发10038错误。

修复代码

给赋值操作加上括号,确保先完成套接字创建与赋值,再进行有效性判断:

if ((connect_socket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) {
    printf("Could not create socket : %d\n", WSAGetLastError());
    return -1;
}

额外提示

inet_addr()在处理无效IP时会返回INADDR_NONE,建议后续代码中增加对该返回值的检查,避免传入错误的服务器地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:50:58