我有一个 C# 应用程序,它就像一个客户端,它可以安装在任何直接连接到公共互联网的系统上(通过数据卡或端口转发),或者它们也可以在路由器后面(没有端口转发)。
使用 java 开发的另一个应用程序就像公共互联网上的服务器应用程序一样。现在,我的 java 应用程序想要将消息推送到路由器后面的 C# 应用程序。Java 应用程序具有客户端的公共和私有 (192.168.xx) IP 地址。Java 应用程序应该 24x7 运行。
所以,现在我有两个选择:
每当 c# 应用程序启动时,它将与 java 应用程序建立套接字连接,并且此套接字连接将保持打开状态,直到 C# 应用程序关闭。
每当 Java 应用程序有 C# 应用程序的东西时,它都会与 C# 应用程序创建一个套接字连接,然后它将推送消息然后关闭连接。
现在,使用第一个选项存在一个问题,即会有很多不必要的连接,因为可能有数千个客户端应用程序,并且可能会发生在某天没有什么可以推送给某些客户端。而且我不知道如何选择第二个选项。
完成此任务的正确方法是什么(选项 1 或 2)?
UPnP 协议是否适合第二个选项?什么是同时具有 API(C# 和 Java)的开源 UPnP 库。我找到了一个叫ohnet 的。这对我来说是正确的吗?我没有找到一个供 OhNet 测试的小例子。