高手帮忙看一下吧,
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这么难搞定啊!
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这么难搞定啊!
试过了,没有用
出错位置:dbgheap.c
if (pHead == NULL)
{
*errno_tmp = ENOMEM;
RTCCALLBACK(_RTC_FuncCheckSet_hook,(1));
}
其中errno_tmp的值为0x00000000
WSARecv写法上应该没有错
但是还有一点疑惑,为什么WSASend有问题,却在WSARecv的地方报错?