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

setsockopt返回-1,WSAGetLastError报WSAEFAULT(10014)问题求助

WinSock中setsockopt返回WSAEFAULT(10014)的问题排查与解决

错误原因

你遇到的WSAEFAULT(10014)错误,根源在于setsockopt调用时传入了无效指针:

nRet = setsockopt(nSocket, SOL_SOCKET, SO_REUSEADDR, (const char*)nOptVal, nOptLen);

这里直接将int变量nOptVal的数值(1)强转为const char*类型,相当于把内存地址0x1传给了函数——这个地址属于无效的系统内存区域,系统检测到非法指针后返回WSAEFAULT错误。

解决方法

setsockopt的第4个参数需要传入选项值的内存地址,而非数值本身。修改代码为:

int nOptVal = 1;
int nOptLen = sizeof(nOptVal);
// 传入nOptVal的地址,再强转为const char*
nRet = setsockopt(nSocket, SOL_SOCKET, SO_REUSEADDR, (const char*)&nOptVal, nOptLen);

修正后,函数将正确读取nOptVal所在内存中的值(1),调用即可正常返回0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:46:13