这里指针为什么不能强制转换呢,请大家诊断诊断啊解决方法

这里指针为什么不能强制转换呢,请大家诊断诊断啊
C/C++ code
#include <stdio.h>
#include <iostream>
#include <winsock2.h>
#include <string.h>
#pragma comment(lib,"wsock32.lib")
using namespace std;
typedef BYTE near  *PBYTE;
typedef unsigned char  BYTE;
#define  MAXIMUMPACKAGESIZE 512

int  m_nUsed;
BYTE m_Buffer[MAXIMUMPACKAGESIZE];

AddData(BYTE data);
AddData(UINT data);
AddData(const BYTE *const pData, UINT nSize);

int main()
{
    WORD version = MAKEWORD(1,1);
    WSADATA wsaData;
    SOCKET clientSock;
    
    int err = WSAStartup(version, &wsaData);
    
    if (err != 0)
    {
        cout << "load Winsock lib error!Error:"<< GetLastError()<<endl;
        return -1;
    }
    else
    {
        cout << "load Winsock lib success----"<< endl;
    }
    
    
    clientSock = socket(AF_INET, SOCK_STREAM, 0);
    SOCKADDR_IN addrSrv;
    addrSrv.sin_family = AF_INET;
    addrSrv.sin_addr.S_un.S_addr= inet_addr("121.248.206.142");
    addrSrv.sin_port = htons(999);
    memset(addrSrv.sin_zero,0,8);
    
    if (connect(clientSock,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)) == SOCKET_ERROR)
    {
        cout << "build connection failded!\n";
        cout << "Error:" << WSAGetLastError() << endl;
        return -1;    
    }
    char sendtxt[] = {"helloworld"};
    UINT txtLength = strlen(sendtxt);
    UINT Length = strlen(sendtxt);
    Length +=4; // add for store strlen: int
    Length++;// for TYPE
    BYTE Type = 0;

    AddData(Length);
    AddData(Type);
    AddData((PBYTE)sendtxt, txtLength);
    BYTE nullTerm='\0';
    AddData(nullTerm);

    WSABUF m_wsabuf;
    m_wsabuf.buf = reinterpret_cast<char*>(m_Buffer);
    m_wsabuf.len = m_nUsed;

    if(send(clientSock, const_cast<WSABUF*>(&m_wsabuf), m_nUsed, 0) == SOCKET_ERROR);
    {
        cout << "send faild~ ERROR: "<< GetLastError() <<endl;
    }
    
    closesocket(clientSock);
    WSACleanup();
}



AddData(const BYTE *const pData, UINT nSize)
{
    if ( nSize > MAXIMUMPACKAGESIZE-m_nUsed )
        return FALSE;
    else
    {
        memcpy(m_Buffer + m_nUsed, pData, nSize);
        m_nUsed += nSize;
        return TRUE;
    }
}

AddData(UINT data)
{
    return AddData(reinterpret_cast<const BYTE*>(&data), sizeof(UINT));
}

AddData(BYTE data)
{
    return AddData(&data, 1);
}




 error C2664: 'send' : cannot convert parameter 2 from 'struct _WSABUF *' to 'const char *'

请高手开个好药方,指点指点啊


------解决方案--------------------
传地址时转化为long,再由long转回去就好了
------解决方案--------------------
if( send(clientSock, (char*)(&m_wsabuf), m_nUsed, 0) == SOCKET_ERROR)
{
cout << "send faild~ ERROR: "<< GetLastError() <<endl;
}
send要求的参数是const char*类型
int send(
SOCKET s,
const char FAR *buf,
int len,
int flags
);

------解决方案--------------------

reinterpret_cast<char*>(&m_wsabuf)

或者(char*)&m_wsabuf