必威体育Betway必威体育官网
当前位置:首页 > IT技术

windows socket编程中调用recvfrom返回-1(windows error 10014)错误的问题

时间:2019-07-23 06:12:11来源:IT技术作者:seo实验室小编阅读:63次「手机版」
 

recvfrom

windows socket编程中调用recvfrom返回-1(windows ERROR 10014)错误的问题

标签(空格分隔): socket


在windows平台下进行socket编程时,调用recvfrom函数,始终返回-1,然后根据WSAGetLastError()获取到错误码为10014,查了网上说的几乎所有方法,全部没有一点问题,代码如下:

    struct sockaddr_in remoteAddr;
    int nAddrLen = sizeof(remoteAddr);
    recvLen = recvfrom(serSocket, recvBuf, MAX_RECV_LENTH, 0, (struct sockaddr *)&remoteAddr, &nAddrLen);

用WSAGetLastError()查看错误码:10014

MSDN描述:WSAEFAULT

The buffer pointed to by the buf or from parameters are not in the user address space, or the fromlen parameter is too small to accommodate the source address of the peer address

在recvfrom中可以引起这个错误码的位置有两个,remoteAddr的大小与nAddrLen里面的值不匹配,这个是网上说的最多的,其实还有一个地方可以引起这个错误,recvBuf的大小与MAX_RECV_LENTH的值不匹配,即给定的接收buf实际占用的空间小于传入的bufLen的值。

但是这里有一点,始终没搞明白,在debug模式下,若:

    char recvBuf[100];
    int recvLen = 300;

则一旦执行了recvfrom()这个函数,就立马会返回-1,若将recvBuf设置为:

char recvBuf[200];

则不会返回-1,只要实际接收数据的长度不大于buf的实际长度,就是没有问题的。

但是编译出来直接运行.exe文件时,无论buf的实际大小和bufLen的值是多少,只要实际接收数据的长度不大于buf的实际长度就都不会有问题。

相关阅读

三国志X威力加强版 解决新武将姓名和列传乱码问题——

博主小的时候很喜欢读《三国演义》,也喜欢玩光荣的三国志系列。三国志10可以说是比较好玩的了,可以操纵一个角色在三国世界里打拼~

营销目标:为什么你的方案,难以有效解决问题?

遇到任何营销问题,你的营销目标都不应该再是简单的“营销愿望”式的罗列,而是以文中的“调查分析、归因、找到目标”这三个步骤为模

大学学生会面试常见问题汇总

学生会面试常见问题一:你觉得学习与工作矛盾吗?说说你是怎样处理学习与工作之间的关系的。(你平时还喜欢干其他事情吗?)与你一起来面试

一份有效的调查问卷,需要注意的几点问题

做产品的问卷调查报告,相信很多产品朋友应该都亲身经历过,而调查问卷的一大问题就是数据整理。那么,如何通过对调查问卷的数据整理,进

产品经理招聘分析及常见面试问题

求职分为了解岗位招聘信息和面试两个阶段,我分别从这两个阶段入手,对产品经理岗位的招聘过程进行分析总结。希望这篇文章能对求职产

分享到:

栏目导航

推荐阅读

热门阅读