C# 服务器应用程序如何检查客户端应用程序是否联机?

C# 服务器应用程序如何检查客户端应用程序是否联机?,c#,winforms,networking,client,server,C#,Winforms,Networking,Client,Server,我有一个监控网络中客户端活动的服务器应用程序(所有代码都是C#winforms)。服务器应用程序已具有客户端计算机的IP地址。我想知道如何检查 i) 客户机是否在线(即已打开并正在使用客户机应用程序)或离线(未使用应用程序) ii)客户的计算机是否已打开 我不擅长网络,在网上搜索了几个小时后还没有得到它。请帮忙 编辑:我在不同的网站上看到了关于服务器客户端应用程序的HTTP、TCP、UDP等内容。它们之间的区别是什么?上面应该使用哪一个 PS:很抱歉有额外的问题。这些问题是相关的,因此我不想发表

我有一个监控网络中客户端活动的服务器应用程序(所有代码都是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服务方法和主机。具体地说 您可以在服务器win form应用程序中托管此服务。作为 只要win form应用程序在服务器客户端中运行 安装在单个计算机上的应用程序可以调用此方法 发送状态(包括机器的单个IP地址)。so服务器 应用程序将知道谁正在运行/打开特定的客户端应用程序 在每台机器上

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


有几个选项可用,下面是一个概念性的答案

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

注意-列表可以是一个小的数据结构,其中包括客户端IP和最后一个标志接收时间。然后,您的服务器可以查看此列表并检查客户端是否过期(比如,当时间戳超过2分钟时,服务器假定客户端不使用服务/不在线)

另一个选择是,服务器可以向客户端发送标志,并定期获得回复

简单客户端服务器-

[简易指南]
[多线程]

您能解释一下如何将标志从服务器发送到客户端以及从客户端发送到服务器吗?非常感谢您的代码片段。请参阅我的编辑,您可以使用标志来指示许多内容。ex标志可用于指示客户端退出应用程序。请参阅附件中的开始编写客户机-服务器程序的指南:)此外,您肯定需要线程:)请阅读附件中的教程。。它们包含由您(@KCdod)提供的多线程服务器套接字程序中的代码,它创建了我不想创建的控制台应用程序。请告诉我如何修改给定的代码以在winform应用程序中工作。教程包含以下链接-也包含链接-这是一个winform聊天程序:)如果我需要帮助,请标记正确答案注意:在大公司,icmp回音经常被防火墙阻止