我有大约43个嵌入式设备(2.4GHz频段)连接到家用路由器(Netgear N300)。我发现我的Netgear路由器不允许超过32个DHCP客户端连接。因此,我只是为了扩展路由器客户端表容量而放置一个转发器(Dlink DIR 816,双天线,禁用DHCP服务器)。这是成功完成的,因为我的所有43个嵌入式设备和3台计算机仍然连接到主路由器。设备连接到托管在计算机上的TCP服务器,该计算机在路由器表中分配了静态IP。我通过每1秒从服务器向我的设备发送“ALIVE”数据包来避免TCP中的一半管道损坏。如果设备在5秒窗口内未能收到此数据包,则会中断连接并重新连接。这个设置已经工作了几个月,但现在我遇到了一个奇怪的问题。经过几个小时的操作后,我的设备停止接收这些“ALIVE”数据包,并不断地建立和断开连接。一旦我重新启动计算机,接下来几个小时的一切都会正常我无法确定问题所在。 以下几点我推断: 1.这不是计算机问题,因为我更改了托管TCP服务器的计算机,但问题仍然存在 2.这不是路由器问题,因为即使我重新启动路由器,问题也不会消失 3.即使我重新启动TCP服务器,连接 - 断开连接循环仍然是
,这不是TCP服务器问题有人可以帮我解决可能导致此问题的原因吗? (与我的设备的所有通信都限制在几个字节)
答案 0 :(得分:0)
因此,您使用40美元路由器通过Wi-Fi 每秒通过TCP发送43 alive
个数据包。 TCP传输意味着带有确认的单播传输 - 通过wifi,每秒43次。这让我觉得Wi-Fi接入点硬件是这里最薄弱的一点(更不用说家用级路由器的43个设备太多了。)
要检查通过Wi-Fi的连接,请使嵌入式设备通过ICMP ping您的服务器。这些设备可能没有ping
应用程序可用,但您可以自行实施这些应用程序。
如果AP坏了,您可能会看到很多响应时间:从100毫秒到3秒。
如果这个理论证明是正确的,您可能还想修改您的系统架构。 TCP很重要。它不支持多播,而UDP,IP和WiFi则支持多播(尽管我不确定最后一次)。向所有客户端发送单个多播alive
消息而不是43个TCP传输应该可以大大减少网络负载。