CE上用recvfrom 接收的数据 的数据类型 转换问题, 请指教, 谢谢先!

superdreamer 2006-07-07 09:54:35
我在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);

以上我注明了回出问题的地方, 请指点, 谢谢!
...全文
221 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
shmily1280 2006-07-10
  • 打赏
  • 举报
回复
至少也要用TCHAR的数组吧....或者在收到数据后也要转换成UNICODE才能正常显示
色郎中 2006-07-07
  • 打赏
  • 举报
回复
帮顶

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧