Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js';净';处理多个TCP客户端的模块_Node.js_Sockets_Tcp_Node.js Client - Fatal编程技术网

Node.js';净';处理多个TCP客户端的模块

Node.js';净';处理多个TCP客户端的模块,node.js,sockets,tcp,node.js-client,Node.js,Sockets,Tcp,Node.js Client,尊敬的, 我使用Node.js创建TCP客户端,使用“net”模块与硬件设备(仅支持TCP协议)连接,硬件设备在可用时传输数据,以便我可以侦听('data',callback)事件, 这对于单个客户机来说很好,但是当我有10多个具有唯一IP地址的硬件设备时,我需要管理多个客户机和事件。 问题是 当客户端数量增加时,来自不同设备的数据仍将是异步的或将被阻止? 我可以同时从多个设备接收数据吗(意味着没有任何 延迟数秒,因为应用程序是实时的,我们不需要 从硬件获取数据的延迟) 如何管理多个客户端或父/

尊敬的,
我使用Node.js创建TCP客户端,使用“net”模块与硬件设备(仅支持TCP协议)连接,硬件设备在可用时传输数据,以便我可以侦听('data',callback)事件,
这对于单个客户机来说很好,但是当我有10多个具有唯一IP地址的硬件设备时,我需要管理多个客户机和事件。 问题是

当客户端数量增加时,来自不同设备的数据仍将是异步的或将被阻止?

我可以同时从多个设备接收数据吗(意味着没有任何 延迟数秒,因为应用程序是实时的,我们不需要 从硬件获取数据的延迟)

如何管理多个客户端或父/子进程,每个子进程通过套接字通信连接到硬件(可计数),这是一种有效的方法

当TCP连接中断时(网络问题、以太网电缆问题),但我很确定不存在“检测连接中断的可靠方法”。我如何处理和重新连接中断的连接

如果有任何指导/经验,请分享以解决此工程问题


提前感谢

这应该是node所擅长的,也是node的一个很好的用例

而客户端的数量增加了来自不同服务器的数据 设备仍将是异步的还是将被阻止

从套接字进行读写应该是异步的,即使有大量的客户端

我可以同时从多个设备接收数据吗(意味着没有任何 延迟数秒,因为应用程序是实时的,我们不需要 从硬件获取数据的延迟)

是的,节点事件循环是通过libuv实现的。我不太熟悉它或它的实现,但我假设它将事件处理委托给最有效的操作系统库(epoll、kqueue)。通过它,IO是异步的,除了使用节点网络库和注册套接字读取、打开、关闭等操作之外,您不需要做任何特殊的事情

如何使用每个子进程管理多个客户端或父/子进程 通过套接字通信连接到硬件(可计数)的进程 这是一种有效的方法吗

通过使用NetTCP服务器api,您可以注册对某些IO套接字事件采取的操作,并且它应该无缝地处理许多并发打开的连接(数百到数千个)。我不太清楚您想要的是哪种父/子进程设置

当TCP连接中断时(网络问题、以太网电缆 问题),但我很确定,没有“可靠的方法来解决问题” 检测连接中断”。我如何处理和重新连接 断开的连接

这是一个独立于节点的问题,应该有很多方法来处理它。问题是,如何检测服务器是否无法访问,以及连接是否具有极高的延迟


如果套接字已关闭,则可以订阅关闭事件并执行适当的操作。。另一个策略是实现超时。如果在几分钟内没有收到任何数据,您可以通过关闭连接来清理连接

这应该是node擅长的,也是node的一个很好的用例

而客户端的数量增加了来自不同服务器的数据 设备仍将是异步的还是将被阻止

从套接字进行读写应该是异步的,即使有大量的客户端

我可以同时从多个设备接收数据吗(意味着没有任何 延迟数秒,因为应用程序是实时的,我们不需要 从硬件获取数据的延迟)

是的,节点事件循环是通过libuv实现的。我不太熟悉它或它的实现,但我假设它将事件处理委托给最有效的操作系统库(epoll、kqueue)。通过它,IO是异步的,除了使用节点网络库和注册套接字读取、打开、关闭等操作之外,您不需要做任何特殊的事情

如何使用每个子进程管理多个客户端或父/子进程 通过套接字通信连接到硬件(可计数)的进程 这是一种有效的方法吗

通过使用NetTCP服务器api,您可以注册对某些IO套接字事件采取的操作,并且它应该无缝地处理许多并发打开的连接(数百到数千个)。我不太清楚您想要的是哪种父/子进程设置

当TCP连接中断时(网络问题、以太网电缆 问题),但我很确定,没有“可靠的方法来解决问题” 检测连接中断”。我如何处理和重新连接 断开的连接

这是一个独立于节点的问题,应该有很多方法来处理它。问题是,如何检测服务器是否无法访问,以及连接是否具有极高的延迟


如果套接字已关闭,则可以订阅关闭事件并执行适当的操作。。另一个策略是实现超时。如果在几分钟内没有收到任何数据,您可以通过关闭连接来清理连接

谢谢您的回答!父/子进程创建就是在父进程中创建IP数组,并将套接字程序作为每个唯一IP的子进程分叉,另一个主要问题是,当服务器/客户端发送FIN数据包时,会触发套接字关闭事件。因此,当我拔下以太网电缆时,不会触发错误/关闭回拨(我对此进行了测试),我正在测试这些,因为这是一个关键的实时事件