CE上用recvfrom 接收的数据 的数据类型 转换问题, 请指教, 谢谢先!
我在CE上 启用了一个UDP SERVER, 然后在那儿直接接收数据, 但遇到一些奇怪的问题, 由于第一次玩这个, 请多指教, 谢谢! 下面是我的代码:
int fd;
struct sockaddr_in server;
//int ret;
fd = socket(AF_INET, SOCK_DGRAM, 0);
if (fd < 0)
return ;
memset((void *)&server, 0, sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons(8765);
server.sin_addr.s_addr = htonl(INADDR_ANY);
ret = bind(fd, (struct sockaddr *)&server, sizeof(server));
if (ret < 0)
{
closesocket(fd);
AfxMessageBox(TEXT("bind error"));
return ;
}
AfxMessageBox(TEXT("hho udp server"));
int widecharLen = 0;
char buff[2000]; //若数组大小 改为10左右, 这个程序就死掉了
// while(1)
{
ret = 0;
len = recvfrom(fd, buff, sizeof(buff), 0, (struct sockaddr *)&clientaddr, &clientlen);
CComboBox *pCB;
pCB = (CComboBox *)GetDlgItem(IDC_EDIT_TEST);
pCB->SetWindowText((LPCTSTR)buff); //数据不正确, 怎么才能正确显示???
#if 0
widecharLen = MultiByteToWideChar(
CP_ACP,
MB_COMPOSITE,
(char *)buff,
-1,
0,
0);
tmpStr.GetBuffer(widecharLen);
MultiByteToWideChar(
CP_ACP,
MB_COMPOSITE,
(char *)buff,
-1,
tmpStr.GetBuffer(widecharLen),
widecharLen);
AfxMessageBox(tmpStr); //这样转换后还是不能正确显示
#endif
//buff[len] = '\0';
AfxMessageBox((CString)buff);//这样有时能正确显示
AfxMessageBox(TEXT("Test Ok"));
}
closesocket(fd);
以上我注明了回出问题的地方, 请指点, 谢谢!