首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2013-07-04 
求助!!关于socket通信的时候cstring转char时的问题我用的是vc6.0代码如下,编译没问题但是接收端接收到的是

求助!!关于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就行了,你试下吧

热点排行