WSARecv总是错误!

InitialJ 2009-06-15 05:10:14
高手帮忙看一下吧,
char* recvBuffer=(char*)malloc(1024);
memset(recvBuffer,'\0',1024);
WSABUF WSArecvBuffer,WSASendBuffer;
WSArecvBuffer.len=1024;
WSArecvBuffer.buf=recvBuffer;
DWORD received=0,sendbyte=0,*Flags=(DWORD*)malloc(sizeof(DWORD));
*Flags=0;
CString temp;
temp.Format(L"CONNECT %s:%s HTTP/1.1\r\n\r\n",L"210.72.225.20",L"80");
char* xxx=(char*)malloc(temp.GetLength());
size_t ii;
wcstombs_s(&ii,xxx,(size_t)1024,temp.GetBuffer(temp.GetLength()),(size_t)1024);temp.ReleaseBuffer();
WSASendBuffer.len=sizeof(xxx);
WSASendBuffer.buf=xxx;
int iiii=WSASend(m_socket,&WSASendBuffer,1,&sendbyte,*Flags,0,0);
int j=WSARecv(m_socket,&WSArecvBuffer,1,&received,Flags,NULL,NULL);//到这边就执行不下去了,提示内存不足
int WSARecvError=WSAGetLastError();
WSASend是没有问题的,为什么WSARecv这么难搞定啊!
...全文
178 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
InitialJ 2009-06-16
  • 打赏
  • 举报
回复
谢谢LS两位,现在已经搞定了。
但是还有一点疑惑,为什么WSASend有问题,却在WSARecv的地方报错?
udknight 2009-06-15
  • 打赏
  • 举报
回复
楼上说的对啊,xxx是char*的指针。你sizeof后只能是4字节。应该是strlen(xxx);
WSARecv写法上应该没有错
songtao_01 2009-06-15
  • 打赏
  • 举报
回复
能执行到这一句int WSARecvError=WSAGetLastError(); 吗?这里报什么错,WSARecvError是多少
songtao_01 2009-06-15
  • 打赏
  • 举报
回复
WSARecv有错吗?我这里没问题啊,倒是你的WSASend有点问题.这一句也有问题WSASendBuffer.len=sizeof(xxx);
InitialJ 2009-06-15
  • 打赏
  • 举报
回复
没人帮忙吗?
出错位置:dbgheap.c
                    if (pHead == NULL)
{
*errno_tmp = ENOMEM;
RTCCALLBACK(_RTC_FuncCheckSet_hook,(1));
}

其中errno_tmp的值为0x00000000
InitialJ 2009-06-15
  • 打赏
  • 举报
回复
memset(recvBuffer,0,1024);
试过了,没有用
udknight 2009-06-15
  • 打赏
  • 举报
回复
memset(recvBuffer,0,1024);

18,356

社区成员

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

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