100分,求解:完成端口为何WSASend时常出错,代码为10107(WSASYSCALLFAILURE)。

feijj2002_ 2007-04-30 09:51:19
100分,求解:完成端口为何WSASend时常出错,代码为10107(WSASYSCALLFAILURE)。

一个阻塞式ACCEPT 接收客户连接的线程,一个工作者线成接收数据,
一个数据处理线程,还有一个转门发送数据线程
程序经常在发送线程内的调用内存分配函数HeapAlloc时失败,在该用malloc后能,正常分配内存。
在调用发送WSASend函数时,通过GetLastErro返回值经常为10107?偶尔会成功。
...全文
325 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
feijj2002_ 2007-06-16
  • 打赏
  • 举报
回复
10107的错误,是由内存分配及访问不当引起的.
问题原由:
用HeapAlloc()分配一段大小为1024字节的内存区.而在后面代码中对这段内存区操作,将它看成大小为1050个字节,内存访问越界,而程序没有报错,后面就引起了一系列问题,如:HeapAlloc分配内存失败,WSASend失败等等,很罕见的问题.
guihui5460 2007-06-13
  • 打赏
  • 举报
回复
我的完成端口,创建都用的CreateThread 也没出什么问题
guihui5460 2007-06-13
  • 打赏
  • 举报
回复
Error lookup 10107 从来不应失败的系统调用失败了。
DentistryDoctor 2007-06-10
  • 打赏
  • 举报
回复
网上能找到的IOCP的代码太多了。
是否用IOCP还得视具体需求而定,不一定用IOCP就合适。
CathySun118 2007-06-10
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20050203/15/3773506.html
feijj2002_ 2007-04-30
  • 打赏
  • 举报
回复
HeapAlloc内存分配失败,这个问题找到,
创建线程时,我用的是CreateThread函数启动线程,应该_beginThreadEx。

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧