【发布时间】:2019-10-28 12:43:18
【问题描述】:
我有一个 Windows 服务和一个 NotifyIcon-Applicaiton (Sys-Tray) 应该与该服务通信。应用程序应该发送一个命令并从服务接收一个端口,用于提供进一步通信的套接字。
服务覆盖 OnCustomCommand 方法,但我不知道如何向调用程序发送答案。
protected override void OnCustomCommand(int command)
{
switch (command)
{
case 'p':
// SEND Port number
break;
case 's':
// SEND Service Name
break;
case 'n':
// SEND Notification
break;
}
base.OnCustomCommand(command);
}
通知图标应用程序
var serviceController = new ServiceController("ATLED Service");
serviceController.ExecuteCommand((int)'p');
【问题讨论】:
-
AFAIK CustomCommand 是“单向”的。如果你的服务需要监听客户端 TCP(?) 连接,通常只选择客户端熟知的一个。
-
有一个与服务通信的套接字,但应用程序不知道只有服务知道的端口。我认为静态端口不是一个好方法(如果端口被占用会发生什么?)
-
如果 80 端口被占用,IIS 会做什么?如果您真的想加强这一点,那么您应该将所选端口写入配置文件并让应用程序也检查该文件。或者,使用registry。
标签: c# windows-services servicecontroller systray