解决方案 »
- 如何用HOOK监视一个正在运行的程序窗口
- 'OnTimer' : member function not declared in
- 请教一个字符串的问题
- help? CBrush如何释放,才能让GDI Objects数值不增加
- 有谁知道那里有下关于vc方面电子书的网站
- 各位,怎样在MFC中获取打印信息,生成的代码没有页边距调整选项
- 如何在程序中显示简体中文汉字?是在繁体中文和英文操作系统下显示!
- CListCtrl中Item在Dialog第二次打开时不能显示文件图标
- “屯屯屯屯屯屯屯屯屯屯屯屯 .....!”我读取串口的数据的时候得到这些数据,是怎么回事?
- 300分向各位高手请教一个有关钩子问题
- 无头绪问题 请解答
- 在xp中栈和内存的关系
http://download.csdn.net/detail/geoff08zhang/4571358
/*strReceive += gcInBuffer;*/
for(int i=0; i<lenth; i++)
{
CString str;
str.Format(_T("%02X "), (unsigned int)gcInBuffer);
strReceive += str;
}
我看了一下,一开始gcInBuffer里的数据就是乱码。具体我实在是不知道怎么回事了,我只是刚接触MFC,不知道到底该怎么解决,请问你有什么办法能帮助小弟的。
那么请问这种问题该如何解决?
您好,我能加您QQ或者别的联系方式吗?我弄这个问题弄了3天了,依然没弄出来,确实很着急,急求您的的帮助!!
比如发送端: sendto(SOCKET, (char*)buf, ....);
那么接收端: recvfrom(SOCKET, (chat*)buf, ...);
版主您好,我按照您的方法,byte定义数组,然后在接受端recvfrom中强制转换,结果buf中的数据还是一个“?”,请问还有别的方法吗?
{
CUDP_ServerDlg *dlg = (CUDP_ServerDlg*)lpParm;
char gcInBuffer[1027];
int lenth;
int size = sizeof(sockaddr_in);
CString strReceive, tempStr;
char*gcClientIP;
bool bSendEnable = false;
int iLineNum;//显示清零
loop:
memset(gcInBuffer,0,1027);//char清空;
bSendEnable = false;
strReceive.Empty(); tempStr.Empty();
while(!dlg->m_bTerminateThread)
{
if ((lenth = recvfrom(dlg->m_sockServer, gcInBuffer, 1024, 0, (struct sockaddr *)&dlg->m_clientAddr, &size) )>0)
{
if (!bSendEnable)
{
CWnd *cwnd = dlg->GetDlgItem(IDC_BUTTON_SEND);//有效发送按扭
cwnd->EnableWindow(TRUE);
bSendEnable = true;
} gcClientIP = inet_ntoa((dlg->m_clientAddr).sin_addr);
tempStr.Format("%s", gcClientIP);
dlg->SetDlgItemText(IDC_STATIC_CLINET_ADDRESS, tempStr);
tempStr.Format("%hu", dlg->m_clientAddr.sin_port);
dlg->SetDlgItemText(IDC_STATIC_CLIENT_PORTNO, tempStr);
tempStr.Format("%s:%hu: ", gcClientIP, dlg->m_clientAddr.sin_port);
strReceive += tempStr;
gcInBuffer[lenth] = '\r';
gcInBuffer[lenth+1] = '\n';
gcInBuffer[lenth+2] = '\0';
strReceive += gcInBuffer;
dlg->m_editReceive.SetWindowText(strReceive);
iLineNum=dlg->m_editReceive.GetLineCount();//接收编辑框的行数 }
if(iLineNum>=20)goto loop;
}
return 0;
}
//主要是char 数组的初始化清空,不管是接收的数组还是发送的数组开始的时候都清空
// int iLineNum;//显示清零
//loop:
// memset(gcInBuffer,0,1027);//char清空;
// bSendEnable = false;
// strReceive.Empty(); tempStr.Empty();
//这里是重点.