Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将事件从C#应用程序传递到Java应用程序_C#_Java_Events_Filesystemwatcher - Fatal编程技术网

将事件从C#应用程序传递到Java应用程序

将事件从C#应用程序传递到Java应用程序,c#,java,events,filesystemwatcher,C#,Java,Events,Filesystemwatcher,我有一个Java应用程序,它在客户机上启动一个小型C#应用程序 我需要一个在C#和Java应用程序之间传递事件的简单解决方案 为了处理相反的方向(Java->C#),我使用了FileSystemWatcher,它监听文件夹更改事件。 Java应用程序将一个空文件写入共享文件夹,C#应用程序根据(空)文件名处理这些事件(然后将其从“队列”中删除)。 找不到与FileSystemWatcher等效的Java来解决将事件从C#传递到Java的问题 有什么创意吗?(提醒:这只是一个Java应用程序,所以

我有一个Java应用程序,它在客户机上启动一个小型C#应用程序

我需要一个在C#和Java应用程序之间传递事件的简单解决方案

为了处理相反的方向(Java->C#),我使用了FileSystemWatcher,它监听文件夹更改事件。 Java应用程序将一个空文件写入共享文件夹,C#应用程序根据(空)文件名处理这些事件(然后将其从“队列”中删除)。 找不到与FileSystemWatcher等效的Java来解决将事件从C#传递到Java的问题

有什么创意吗?(提醒:这只是一个Java应用程序,所以我没有Apache服务器或类似的东西)

谢谢

这可能是你的一个选择

这看起来像是一个复制品


我会使用一个简单的JMS服务器,比如ActiveMQ来来回传递消息。

基本上,您需要进程间通信。有很多方法

  • 插座
  • 命名管道
  • 任何分布式队列,如RabbitMQ、ActiveMQ、e.t.c
  • 命名互斥


e、 t.c.

有许多可能的方法,但通常分为两类:

javac#互操作(like) 或 某种形式的标准化通信,如Web服务(它们不需要“服务器”来工作),如C#中的WCF和java端的Metro


顺便说一句:你真的不应该使用文件系统来传递事件。

一个很好的简单的写法,写于2010年


您正在通过文件系统传递事件?当然,没有必要为了拥有web服务器而安装Apache。您可以在应用程序中集成一个小型web服务器。但是,由于您与本地计算机上的应用程序进行通信,因此不需要担心防火墙问题,因此不必通过端口80进行通信,也不必使用HTTP-您可以使用任何类型的TCP/IP套接字。我感觉使用文件系统不是一个完美的解决方案,但它工作良好且足够稳定。我不应该使用它的任何其他原因?让我们看看:1。如果倾听的一方崩溃了会发生什么?另一方怎么知道?它只会继续写空文件,最终可能崩溃。2.对于某些类型的通信,无法确认是否收到了重要的消息。3.这很容易受到干扰-其他应用程序不希望您将数据写入某个文件夹。用户可以尝试打开其中一个文件,以防止侦听器将其删除。(字符不足-下一条消息中有更多信息)4。从文件系统写入和擦除需要时间,这对发送/接收消息所需的时间造成了非常严格的限制。5.消息的长度有一个硬约束(最大文件名长度)。我相信其他人可以提出很多其他原因,但主要原因是:对于这个问题,有标准的、有良好记录的、全面的、有效的解决方案。没有必要重新发明轮子。您可能会重新解决其他人已经解决的所有问题。看起来是一个有趣的解决方案,谢谢。然而,在测试它之前,我想知道:它使用.Net作为服务器,Java作为客户端,而我需要另一种方式(.Net向Java发送事件)。命名管道与服务器无关,它们本质上是虚拟文件。请参阅@Ranch,它应该仍然可以工作,只是需要对代码进行一些修改@Gordon,我认为@Ranch在提到服务器/客户机时更多地指的是每个人所扮演的角色。根据他的问题的背景,所有这些都发生在同一台机器上。