我有一个Java应用程序,通过TCP套接字连接到C / C ++开发的“服务器”。 应用程序和服务器都运行在同一台机器上,一个Solaris机器上(但我们正在考虑最终迁移到Linux上)。 交换的数据types是简单的消息(login,login确认,然后客户端要求某事,服务器答复)。 每条消息的长度大约为300个字节。 目前我们正在使用套接字,并且一切正常,但是我正在寻找一种使用IPC方法交换数据(更低的延迟)的更快方式。 我一直在研究networking,并提出了以下技术的参考: 共享内存 pipe道 队列 以及所谓的DMA(直接存储器存取) 但是我找不到适合自己的performance的分析,既没有用JAVA和C / C ++来实现它们,也没有我想象得到的pipe道。 任何人都可以在这方面评论每种方法的性能和可行性吗? 任何指针/链接到有用的实现信息? 编辑/更新 下面的评论和答案我在这里,我发现有关Unix域套接字的信息,这似乎是build立在pipe道,并将节省我整个TCP堆栈。 这是平台特定的,所以我打算用JNI或Juds或Junixsocket进行testing。 接下来可能的步骤是直接实现pipe道,然后共享内存,虽然我已经被警告复杂的额外水平… 谢谢你的帮助
Node.js与我们的web项目完美匹配,但是我们更喜欢Python的计算任务很less。 我们也已经有了一个Python代码。 我们非常关心速度,如何以asynchronous非阻塞的方式从node.js调用Python“worker”,最优雅的方式是什么?
Unix / Linux提供了许多IPC:pipe道,套接字,共享内存,dbus,消息队列… 什么是最合适的应用程序,他们如何执行?
对于这个问题,我找不到任何有用的答案,虽然已经多次以不同的方式提出了这个问题。 我想在两个进程(两个不同的应用程序)之间共享内存,以便其中一个可以写入该内存,另一个可以读取。 这是可能的.NET? 怎么样? 谢谢
我试图玩与进程间通信,因为我不知道如何使用Windows下的命名pipe道我想我会使用networking套接字。 一切都发生在本地 服务器能够在一个单独的进程中启动从站并监听某个端口。 奴隶们做的工作,并把结果提交给主人。 如何找出哪个端口可用? 我假设我不能听港口80或21? 我正在使用Python,如果这削减了select。 谢谢!
考虑以下情况: 要求: 英特尔x64服务器(多个CPUsockets=> NUMA) Ubuntu 12,GCC 4.6 两个进程通过(命名)共享内存共享大量数据 古典生产者 – 消费者情景 内存被安排在一个循环缓冲区(有M个元素) 程序序列(伪代码): 过程A(制作人): int bufferPos = 0; while( true ) { if( isBufferEmpty( bufferPos ) ) { writeData( bufferPos ); setBufferFull( bufferPos ); bufferPos = ( bufferPos + 1 ) % M; } } stream程B(消费者): int bufferPos = 0; while( true ) { if( […]
我有以下情况: 我有2个JVM进程(真正的2个java进程是分开运行的,而不是2个线程)在本地机器上运行。 我们称之为ProcessA和ProcessB 。 我希望他们相互交stream(交换数据)(例如ProcessA发送消息给ProcessB做某事)。 现在,我通过编写一个临时文件来解决这个问题,并且这些进程会定期扫描这个文件来获取消息。 我认为这个解决scheme不太好。 什么是更好的select来实现我想要的?
我正在寻找开发两个独立的(但相关的)Java桌面应用程序。 我想要一个应用程序触发另一个应用程序的能力,传递可以被编辑和传回的数据,即通信将是双向的。 如果其他应用程序已经运行,我希望他们只是沟通,即我不想只通过命令行传递参数等。 一般来说,为了达到这个目的,我应该看什么策略/技巧?
我该如何编写一个简单的工具 – testing应用程序,说明如何使用IPC /命名pipe道? 例如,如何编写一个控制台应用程序,其中程序1向程序2发送“Hello World”,程序2收到消息并向程序1回复“Roger That”。
我从来没有必要在Windows上做IPC。 目前我正在开发一对程序,一个标准的GUI / CLI应用程序和一个Windows服务。 该应用程序必须告诉服务该怎么做。 那么,假设通信只是本地的,那么这两个过程最好的沟通方式是什么? 在哪里最好的定义是更强大,更不容易出错,而不是最高性能也最容易编码。 代码示例将非常受欢迎,但不是必需的:-) 注意我正在问什么使用,一个标准的TCP套接字,命名pipe道,或一些其他通信方式只。 谢谢!