服务器应用程序如何检查客户端应用程序是不是在线?

Posted

技术标签:

【中文标题】服务器应用程序如何检查客户端应用程序是不是在线?【英文标题】:How can server application check if a client application is online?服务器应用程序如何检查客户端应用程序是否在线? 【发布时间】:2015-02-10 20:54:15 【问题描述】:

我有一个服务器应用程序,它监视网络中客户端的活动(所有代码都在 C# winforms 中)。服务器应用程序已经拥有客户端计算机的 IP 地址。我想知道如何检查

i) 客户端是在线(即已打开并一直在使用客户端应用程序)还是离线(未使用应用程序)?

ii) 客户的计算机是否已打开?

我不擅长网络,在互联网上搜索了几个小时后没有得到它。请帮忙!

已编辑:我在各种有关服务器-客户端应用程序的站点中看到了 HTTP、TCP、UDP 等的提及。它们之间有什么区别,上面应该使用哪一个?

PS:很抱歉有额外的问题。这些问题是相关的,所以我不想发新帖子。

【问题讨论】:

【参考方案1】:

您可以通过使用它们各自的 IP 地址 ping 每台机器来检查客户端机器是否在线。

Ping ping = new Ping();
PingReply pingReply = ping.Send("IP Address");

if(pingReply.Status == IPStatus.Success)

   //Machine is online


检查客户端机器是否正在使用任何特定的应用程序(如果 这些应用程序由您构建并且可以访问源代码)。 你可以使用WCF inter process communication。基本上你会创建 托管环境中的 WCF 服务方法和主机。再具体一点 您可以在您的服务器 win 表单应用程序中托管此服务。作为 只要您的 win 表单应用程序在服务器客户端中运行 安装在单个机器上的应用程序可以调用这个方法来 发送状态(包括机器的个人 IP 地址)。所以服务器 应用程序会知道谁在运行/打开特定的客户端应用程序 在每台机器上。

如果您想检查任何其他客户端应用程序的状态,请说 每当客户端计算机运行 “xyz”应用程序。那么你需要创建一个运行在 单个客户端计算机(Windows 服务将是最佳选择)。工作 这个应用程序将检查正在运行的进程 定期查看是否有任何特定的应用程序进程正在运行。如果 然后它将调用托管在您的服务器应用程序中的 WCF 以发送 状态。

【讨论】:

注意:在大公司中,icmp echo 经常被防火墙阻止【参考方案2】:

有几种选择,以下是概念性答案

您的服务器可以在某些列表中维护可用的客户端。在这里,您可以包括特定客户的生存时间(如会话到期)。您的客户端需要向服务器发送定期标志以指示客户端仍在使用该服务,并且当服务器收到此回复时,它可以更新它的列表会话,因此它不会过期。

注意 - 该列表可以是一个小型数据结构,其中包括客户端 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 [多线程]

【讨论】:

你能解释一下如何从服务器到客户端以及从客户端到服务器发送标志吗?代码 sn-p 表示赞赏。 查看我的编辑,您可以使用 FLAG 来表示很多东西。 ex- 标志可用于指示客户端退出应用程序。请参阅随附的指南以开始编写客户端-服务器程序:) 另外你肯定需要线程 :) 阅读附加的教程.. 它们包含代码 在您(@KCdod)提供的多线程服务器套接字程序here 中,它创建了我不想创建的控制台应用程序。请告诉我如何修改给定的代码以在 winform 应用程序中工作。 教程包含以下链接 - csharp.net-informations.com/communications/… 还包含链接 - csharp.net-informations.com/communications/… 这是一个带有 winform 的聊天程序 :) 如果我提供帮助,请标记正确答案

以上是关于服务器应用程序如何检查客户端应用程序是不是在线?的主要内容,如果未能解决你的问题,请参考以下文章

java是如何实现客服在线聊天功能的?

升讯威在线客服系统:客户收到攻击威胁勒索,我是如何保障客户安全的

升讯威在线客服系统:客户收到攻击威胁勒索,我是如何保障客户安全的

升讯威在线客服系统:客户收到攻击威胁勒索,我是如何保障客户安全的

使用 WPF + Chrome 内核实现 在线客服系统 的复合客服端程序

从服务器检查 Android 设备是不是在线