读书人

这个有关问题很困惑如何能实时的显示

发布时间: 2012-01-05 22:36:54 作者: rapoo

这个问题很困惑,怎么能实时的显示recvfrom接受的数据!!
类:CSocketNetwork
g_RecvBuf[0].AddTail(RecvBuf);//添加数据到队列

类:CNetworkMsgDlg

PUCHARpRecvData;//全局变量
void CNetworkMsgDlg::OnMenuitem()
{
pRecvData = (PUCHAR)g_RecvBuf[0].RemoveHead(); //获取队列信息

}
//我用了个定时器5秒显示一次,但是这样有些数据不能显示
void CNetworkMsgDlg::OnTimer(UINT nIDEvent)
{
if(nIDEvent==1)
{
int i=0;
m_RecvBuf.InsertString(i++,(CString)pRecvData);
}
CDialog::OnTimer(nIDEvent);
}
怎样实现如果有数据发来马上显示到m_RecvBuf控件

[解决办法]
不要用定时器,直接放在接收函数里面。如果收到的数据放到队列里的,那就另外开一个线程阻塞在队列等待数据。
[解决办法]
自定义消息,收到数据后将数据发送消息到消息函数,就可以实时显示了。
[解决办法]
int WSAIoctl (
SOCKET s,
DWORD dwIoControlCode,
LPVOID lpvInBuffer,
DWORD cbInBuffer,
LPVOID lpvOUTBuffer,
DWORD cbOUTBuffer,
LPDWORD lpcbBytesReturned,
LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionROUTINE
);

读书人网 >VC/MFC

热点推荐