如何确保客户端-服务器通信中的接收应用程序已启动并且运行?

How to ensure the receiving application is up and running in client-server communication?

我目前正在研究客户端-服务器解决方案,通过套接字网络连接将文件传输到另一台机器。因为我也打算在接收端做一些评估,所以我假设我也需要有某种客户端或服务器程序 运行ning 在那里。

我对整个客户端-服务器的事物相当陌生,因此有以下基本问题:

我目前的理解是客户端和服务器将是两个独立的程序运行在两台不同的机器上运行。通常如何确保通信伙伴(即从客户端发送时的服务器和从服务器发送时的客户端)实际上已启动并且 运行ning 在我要将文件传输到的远程计算机上?

到目前为止,我一直在研究以下选项:

  1. 在发送程序中包含对远程的 ssh 访问 机器并启动接收程序的一个实例 远程机器。

  2. 将接收程序运行设置为远程的恶魔进程 机器。这意味着接收程序应该总是 在远程机器上 运行ning。但是,我怎么知道 该进程已崩溃或由于某种原因已关闭,并且 如果没有上面的选项 1),如何从中恢复?

所以,我的主要问题是:是否还有其他值得考虑的选项?

感谢您对此的看法!

根据您的客户端服务器消息的设置方式,ping(我不是指 ICMP ping,而是基本思想)消息,服务器可以用 "I am alive" 响应的消息会有所帮助。这样至少你知道服务器端是 运行.

在使用这些监控系统的生产环境中并不少见。其他值得考虑的选项 - xinet.d 脚本 - 在传入连接上启动的东西。

可能有新的方法来实现自动 start/restart 或开始将其与 systemd/systemctl 连接,但我对它们不够熟悉,无法为您提供具体细节。

一个有点粗糙但有效的方法可能是 cron 作业,它定期运行脚本以强制保持服务正常运行。