完成端口 WSASend 出现10014错误

wwwwqr 2009-12-08 05:28:13
使用完成端口通信,服务端使用WSASend发送响应数据时,出现10014错误,显示参数错误,但是经过检验,所有参数都是正确的。实在找不出问题了,求助。
代码为响应IOWrite的函数。
DWORD ulFlags = MSG_PARTIAL;
DWORD dwByteSend;
pContext->m_WriteBuffer.Delete(dwIoSize);//dwIoSize为上次发送完的数据
if (pContext->m_WriteBuffer.GetBufferLen() == 0)
{
pContext->m_WriteBuffer.ClearBuffer();
SetEvent(pContext->m_hWriteComplete);//让其他线程可以投递写操作
return true;
}
else
{
OVERLAPPEDPLUS * pOverlap = new OVERLAPPEDPLUS(IOWrite);

pContext->m_wsaOutBuffer.buf = (char*) pContext->m_WriteBuffer.GetBuffer();
pContext->m_wsaOutBuffer.len = pContext->m_WriteBuffer.GetBufferLen();

//数据发送处
int nRetVal = WSASend(pContext->m_Socket,
&pContext->m_wsaOutBuffer,
1,
&dwByteSend,
ulFlags,
&pOverlap->m_ol,
NULL);
int nLastError = WSAGetLastError();
if ( nRetVal == SOCKET_ERROR && nLastError != WSA_IO_PENDING )
{
CString str;
str.Format("OnClientWriting IO ERROR:%d",WSAGetLastError());
MessageBox(m_pFrame->m_hWnd, str.GetBuffer(0), "断开", MB_OK);
RemoveClient( pContext, FALSE );
}
}
...全文
295 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangjm2009 2009-12-21
  • 打赏
  • 举报
回复
系统检测到在一个调用中尝试使用指针参数时的无效指针地址。
wwwwqr 2009-12-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mengde007 的回复:]
http://topic.csdn.net/t/20051011/17/4319761.html
[/Quote]

这个和我那个不一样啊,我的是WSASend返回10014错误,而不是的WSARecv出现这个错误。
wwwwqr 2009-12-08
  • 打赏
  • 举报
回复
这个应该没有问题啊。我看很多地方都是这样用的。
雪影 2009-12-08
  • 打赏
  • 举报
回复
int nRetVal = WSASend(pContext->m_Socket,
&pContext->m_wsaOutBuffer,
1,
&dwByteSend,
ulFlags,
&pOverlap->m_ol,//这里有参数
NULL); //这个参数是否能为空?
tan625747 2009-12-08
  • 打赏
  • 举报
回复
帮顶
雪影 2009-12-08
  • 打赏
  • 举报
回复
10014错误
WSAEFAULT The lpBuffers, lpNumberOfBytesSent, lpOverlapped, or lpCompletionRoutine argument is not totally contained in a valid part of the user address space.
lz还是仔细检查一下这四个参数吧

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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