求助,用CAsyncSocket网络实时采集的问题,请大侠帮忙解决一下
我想用CAsyncSocket实现对一台仪器进行取数据,这台仪器是用labview做的网络协议。可是用Winsock采集老是滞后(采集数据大约滞后接近一分钟),哪位大侠帮我看看代码,帮忙解决一下。
CMySocket是继承CAsyncSocket的类,除了和view关联没有修改别的东西。
。。。
m_Sock.SetParent(this);
m_Sock.Create();
int ret;
int iOption;
iOption = 1;
ret = m_Sock.SetSockOpt(TCP_NODELAY, (char*)&iOption, sizeof(iOption));
if(ret == 0)
AfxMessageBox("set net option error0");
ret = m_Sock.SetSockOpt(SO_DONTROUTE, &iOption, sizeof(iOption));
if(ret == 0)
AfxMessageBox("set net option error1");
iOption = 0;
ret = m_Sock.SetSockOpt(SO_RCVBUF, &iOption, sizeof(int));
if(ret == 0)
AfxMessageBox("set net option error2");
iOption = 0;
ret = m_Sock.SetSockOpt(SO_SNDBUF, &iOption, sizeof(int));
if(ret == 0)
AfxMessageBox("set net option error3");
m_Sock.Connect("10.0.0.120", 1888);
//这段是初始化socket,照书抄的*^_^*
。。。
//下面是在定时器中设置发送读数据的命令
m_message.Format("@READ_DATA\xa");
m_Sock.SendTo((LPCTSTR)m_message,m_message.GetLength(),1888,"10.0.0.120",MSG_DONTROUTE);
//然后是接收数据的函数
int iBufSize = 256;
int iRcvd;
CString address;
address = "10.0.0.120";
UINT port = 1888;
iRcvd = m_Sock.ReceiveFrom(m_buf, iBufSize, address, port);
if (iRcvd == SOCKET_ERROR)
{
AfxMessageBox("Receive data error!");
}
else
{
memcpy(&m_buf, &buf, 256*sizeof(char));
}
。。。
数据老是延迟接近1分钟,而用仪器厂家提供的labview程序就能实时读出来,请大侠们帮忙看看程序,万分感谢!!