服务器应用程序如何检查客户端应用程序是否联机
本文关键字:应用程序 客户端 联机 检查 是否 何检查 服务器 | 更新日期: 2023-09-27 18:34:00
我有一个服务器应用程序,用于监视客户端在网络中的活动(所有代码都在C# winforms中(。服务器应用程序已具有客户端计算机的 IP 地址。我想知道如何检查
i( 客户端是联机(即已打开并一直在使用客户端应用程序(还是脱机(未使用应用程序(?
ii( 如果客户的电脑被打开?
我不擅长网络,在互联网上搜索了几个小时后没有得到它。请帮忙!
编辑:我在各种关于服务器-客户端应用程序的网站中看到过HTTP,TCP,UDP等的提及。它们之间有什么区别,应该使用哪一个来说明上述情况?
PS:抱歉有额外的问题。这些问题是相关的,所以我不想发表新帖子。
您可以通过使用各自的 IP 地址对每台计算机执行 ping 操作来检查客户端计算机是否联机。
Ping ping = new Ping();
PingReply pingReply = ping.Send("IP Address");
if(pingReply.Status == IPStatus.Success)
{
//Machine is online
}
检查客户端计算机是否正在使用任何特定应用程序(如果 这些应用程序由您构建并可以访问源代码(。 可以使用 WCF 进程间通信。基本上你会创造 托管环境中的 WCF 服务方法和宿主。具体来说 您可以在服务器 WIN 表单应用程序中托管此服务。如 只要您的 WIN 表单应用程序在服务器客户端中运行 安装在单个计算机中的应用程序可以调用此方法以 发送状态(包括机器的单个 IP 地址(。所以服务器 应用程序将知道谁在运行/打开特定的客户端应用程序 在每台机器中。
如果要检查任何其他客户端应用程序的状态,请说 您希望在客户端计算机运行 "XYZ"应用程序。然后你需要创建一个运行在 单个客户端计算机(Windows服务将是最佳选择(。工作 此应用程序将检查正在运行的进程 定期查看是否有任何特定的应用程序进程正在运行。如果 然后,它将调用服务器应用中托管的 WCF 来发送 地位。
有几个选项可用,下面是一个概念答案
您的服务器可以维护某些列表中的可用客户端。在这里,您可以包括特定客户端的生存时间(如会话到期(。客户端需要向服务器发送定期标志,以指示客户端仍在使用该服务,当服务器收到此回复时,它可以更新其列表的会话,使其不会过期。
注意 - 该列表可以是小型数据结构,其中包括客户端 IP 和上次标志接收时间。然后,您的服务器可以浏览此列表并检查客户端是否过期(假设时间戳超过 2 分钟时 服务器假定客户端不使用服务/不在线(
另一个选项是您的服务器可以向客户端发送标志并定期获得回复。
简单客户端服务器 -
http://www.codeproject.com/Articles/12286/Simple-Client-server-Interactions-using-C [简单指南]http://csharp.net-informations.com/communications/csharp-multi-threaded-server-socket.htm [多线程]