!关于socket通信的时候cstring转char时的有关问题

求助!!关于socket通信的时候cstring转char时的问题
我用的是vc6.0  
代码如下,编译没问题但是接收端接收到的是乱码
void CCeshiDlg::OnButton2() 
{
// TODO: Add your control notification handler code here
int reVal;
CString temp;
// char a1[200];
int len=temp.GetLength();
temp=GetDlgItemText(IDC_EDIT_send,temp);
// char *p=( char*)temp.GetBuffer(temp.GetLength());
char *p=( char*)LPCTSTR(temp);
reVal = send(m_sock, (char *)p,len, 0);
temp.ReleaseBuffer();
if (reVal==SOCKET_ERROR)
{
CString strtxt;
GetDlgItemText(IDC_EDIT1,strtxt);
strtxt+="\r\n";
strtxt+="发送失败";
SetDlgItemText(IDC_EDIT1,strtxt);
}
}
请问这个问题怎么解决,我试了好多种方法
看了字符集是多字符集,百度哪两种方法都试了都不行。
求大神指点....
socket cstring

------解决方案--------------------
int reVal;
CString temp;
// char a1[200];
int len=temp.GetLength();
reVal = send(m_sock, (char *)p,len, 0);
问题在这里,你的len是等于0的,len怎么能提前求,你对一个空CString求长度放到len,后面发送却是用这个len
------解决方案--------------------
引用:
int reVal;
CString temp;
// char a1[200];
int len=temp.GetLength();
reVal = send(m_sock, (char *)p,len, 0);
问题在这里,你的len是等于0的,len怎么能提前求,你对一个空CString求长度放到len,后面发送却是用这个len


+1
------解决方案--------------------
	CString str = "abgb123";

char data[100];
ZeroMemory(data, 100);

int len = str.GetLength();

char *tempData;
tempData = str.GetBuffer(MAX_PATH);

memcpy(data, tempData, len);

str.ReleaseBuffer();


直接用data就行了,你试下吧