为什么接收数据会这么慢?

yuanshengkj2008 2009-07-12 03:31:28
我在m_info输入文字,大约要等5秒后才能m_RichEdit控件显示出来。为什么接收数据会这么慢?请高手指点。谢谢!!
客户主要代码如下:
void CClientDlg::OnButtonsend() 
{
// TODO: Add your control notification handler code here
char a[1]={'~'};
int res = pMysocket->Send(a,1);
if(res == SOCKET_ERROR)
{
CString str;
str.Format("发送数据失败,错误码:%d",WSAGetLastError());
MessageBox(str);
return;
}
Sleep(100);
int ret = pMysocket->Send(&logfont,sizeof(logfont));
if(ret == SOCKET_ERROR)
{
CString str;
str.Format("发送数据失败,错误码:%d",WSAGetLastError());
MessageBox(str);
return;
}
CString str,temp;
m_info.GetWindowText(str);
if(str.IsEmpty()|m_name.IsEmpty())
return;
temp.Format("%s说: %s",m_name,str);
pMysocket->Send(temp.GetBuffer(temp.GetLength()),temp.GetLength());
m_info.SetWindowText("");
m_info.SetFocus();
}

void CClientDlg::ReceiveData()
{
if(font)
{
LOGFONT temp;
//接收传来的字体数据
int factdata = pMysocket->Receive((LOGFONT*)&temp,sizeof(temp));
m_Font.Detach();
m_Font.CreateFontIndirect(&temp); //直接创建字体
m_RichFont.SetFont(&m_Font); //设置字体
font = FALSE;
}
else
{
char buffer[200];
//接收传来的数据
int factdata = pMysocket->Receive(buffer,200);
buffer[factdata] = 0;
if(buffer[0] == '~')
{
font = TRUE;
return;
}
else
{
CString str;
str.Format("%s",buffer);
m_RichFont.SetWindowText(str);
m_RichFont.SetSel(0,-1);
m_RichFont.Copy();
m_RichEdit.Paste();

}
}
}
...全文
41 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bragi523 2009-07-12
  • 打赏
  • 举报
回复
跟一下
看看时间损失在哪
辅助抓包看下
zteclx 2009-07-12
  • 打赏
  • 举报
回复
使用了阻塞方式吧,这样,对方没有确认收到,你就不能再发送。使用非阻塞方式或UDP,就可以快很多了。
songtao_01 2009-07-12
  • 打赏
  • 举报
回复
是不是字体信息的大小太大,或者是sleep太多,或者是创建字体太慢,或者是网络太忙,你可以调试一下,看看哪里占用时间较长
myprglive 2009-07-12
  • 打赏
  • 举报
回复
看看ReceiveData模块的调用是不是处于一个循环语句中,如果有的话是按循环倍数成倍放大的
  • 打赏
  • 举报
回复
sleep 了多少
yuanshengkj2008 2009-07-12
  • 打赏
  • 举报
回复
其它地方没用,不过服务端在ReceiveData接收时也用了一个Sleep
myprglive 2009-07-12
  • 打赏
  • 举报
回复
从你的代码看不出为什么, 估计问题出在pMysocket所指向的对象上,你不会在里面用了很多Sleep吧

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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