如何快速Socket访问/通讯多个设备

tongtong198808 2015-02-11 09:53:40
描述:某个项目有多个设备额,每个设备是ModBus。
我需要通过服务器根据协议,通过网络读取每个设备里面数值,然后处理+存储。
我原来的方法也是最原始的办法,就是通过Socket(每个设备支持TCP客户端,TCP服务端)循环读取,一次读一个。
但是设备个数少还好,但是如果多的话,循环一次时间就长了,数据也就没法保证是实时数据了。
请问高手如何处理,多线程也从考虑过,但是毕竟新手,摸不着头绪。。
希望高手留下QQ号,我好问的详细一点
...全文
905 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kwer 2015-08-27
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/kwer/9050123
lbg 2015-05-07
  • 打赏
  • 举报
回复
要采集什么东西的?需要这么快的数据?MODBUS你收完一个站点马上请求下一个站点,而且TCP的,10M的网速,1s就有1.25MB数据了,如果是RTU的方式,一个站点200Byte,1.25MB,6250个站点,扣除其他的,打个折 ,5折总行了吧,也能通信3000个站点,除非,你每个站点一次命令读不上了,分3次,那也有1000个站点,打折,5折,也有500个站点,到底要读多少个?我用串口,20多个站点,19.2kbps的,1s内就循环完毕,关键是界面更新,存储的速度慢了
LinuxCard 2015-02-11
  • 打赏
  • 举报
回复
必须得多线程啊,看你得设备有多少了,1000个?2000个?,
draculamx 2015-02-11
  • 打赏
  • 举报
回复
你写的Modbus程序是做主站还是从站?? 从站的话简单一些,你等着别人来读你就好了。 主站的话,你要去主动发命令给下面的设备,然后等待设备应答。 你走的是Modbus TCP,传输速度应该不是问题,可能下面的设备相应的慢?? 问题很好解决啊,你下面有几个设备,你就建立几个 TcpClient,每个TcpClient 单独使用一个线程,并且都设置成异步模式就好了,不难的。。

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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