求助,用CAsyncSocket网络实时采集的问题,请大侠帮忙解决一下

神奇动物在哪里007 2006-03-19 09:56:39
我想用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程序就能实时读出来,请大侠们帮忙看看程序,万分感谢!!
...全文
48 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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