草庐IT

ipc通信

全部标签

c++ - 两个进程之间的通信

之前已经讨论过这个问题,但我一直在努力解决这些问题,所以希望能得到一个更适合我情况的更清晰的答案:我正在32位Windows(最低要求是WinXP)下用C++开发一个应用程序,它需要跨两个进程进行通信。要害就是进程1(p1)需要启动进程2(p2),然后调用p2的各种函数。我需要p1停止它正在做的事情,直到它调用的p2函数完成,然后从它停止的地方继续。对我来说最好的研究方法是什么,这样我才能做这样的事情?祝一切顺利克里斯 最佳答案 我知道远程过程调用听起来更吸引人,因为它消除了设计您自己的“通信协议(protocol)”和序列化您自己

java - 如何让 2 个 Java 应用程序相互通信?

我有2个Java应用程序。首先,我可以随意编辑,但稍后我会将其编译为机器代码。第二个我无法编辑,但我可以为它写一个插件。我需要让该插件能够与第一个应用程序对话。一般只是简单地互相发送字符串。进程的输入和输出流不是我的选择。我正在考虑使用tcp套接字客户端/服务器或将充当缓冲区的文件。但是这两种方式对我来说都有点难看,谁能给我一个更好的主意? 最佳答案 这取决于您要传输的数据类型。如果只是String,那么:如果numberofprocess=2并且您对此有把握,那么stdin&8stdout是最好的前进方式。您可以使用Process

c++ - 什么是 C/C++ for Windows 中基于共享内存的轻量级 IPC 机制?

我现在一直在从事一些C++项目,这些项目涉及使用窗口消息进行一些简单的IPC。在许多情况下,通过将数据放入共享内存段然后将指针传递到带有SendMessage的共享内存,一些额外的数据随窗口消息一起传递。称呼。一直重复这个很烦人,但在通过发明另一个IPC系统来解决这种沉闷的重复之前,我想问:是否有满足标准的现有框架?:用C或C++编写(我们在这里使用MSVC)尽可能少的依赖;在最好的情况下,它只是一些使用纯C++和Windows标准库的源文件,可以直接编译到应用程序/库中。适用于WindowsXP及更新版本基于窗口消息和共享内存段构建非常需要正确的错误报告(远程进程消失、远程进程不理解

c++ - 如何使用win32编写socket通信程序

想学习win32套接字编程的新人。我了解一点MFC,但这不是开始的好点,因为它只是隐藏了程序员的内部细节。 最佳答案 使用winsock函数(Winsock2.h)。 关于c++-如何使用win32编写socket通信程序,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/558028/

c++ - IPC的实现方式

在Windows上实现IPC的首选方法是什么?我知道几个类似的:命名管道、共享内存、信号量?,也许是COM(虽然我不确定如何)...我想知道什么是最健壮、最快速、最不容易出错且易于维护/理解的。 最佳答案 几年前,我们针对客户端/服务器情况研究了这个特定问题,客户端和服务器都在同一台机器上运行。当时,即使客户端和服务器位于同一台机器上,我们也使用套接字(UDP)。对我们来说,“最好”原来是共享内存与命名信号量来同步它。当时,我主要研究管道与原始共享内存实现的对比。我测试了具有重叠I/O和I/O完成端口的管道。我测试了多种数据大小。在

c++ - 管道通信 C++

我正在编写两个必须通信的小型C++应用程序。第一个将是一项服务,每隔一段时间,必须提醒用户注意某事。由于服务无法创建窗口,因此我将应用程序设计为两个独立的可执行文件。该服务将使用通知程序进行通信。该服务只需要向通知程序发送文本消息,通知程序会在系统托盘中显示一个气球。我正在尝试使用命名管道,我想我已经差不多了,但还不够。到目前为止我所拥有的是:在通知方:m_hInPipe=CreateNamedPipe(L"\\\\.\\pipe\\nhsupspipe",PIPE_ACCESS_INBOUND,PIPE_WAIT,1,1024,1024,60,NULL);意思是我创建了一个名为nhs

S7-1200和1500PLC与条码枪建立TCP_IP通信的具体方法示例

S7-1200和1500PLC与条码枪建立TCP_IP通信的具体方法示例今天和大家分享西门子S7-1200和1500PLC如何获取条码枪的扫描数据,这种案例中一般PLC作为TCP/IP的客户端(只接收数据,不发送数据),条码枪作为TCP/IP的服务器。如下图所示,在指令—通信—开放式用户通信中可以找到相关的通信指令,这里可以看到有TRCV_C和TRCV两个接收指令,这两者的区别是TRCV_C是建立连接并接收数据集成在一起的,而TRCV是没有建立连接,只负责接收数据的。我们这里使用TRCV_C来举例说明:如下图所示,我们拖拽TRCV_C指令到OB1中,此时系统会自动生成一个背景DB块,点击确定即

c# - 使用 ServiceController 类与 Windows 服务通信

我有一个由两个服务组成的Windows服务项目,service1和service2。我们如何在这两个服务之间进行通信?例如,我们如何让service1启动service2?我可以使用ServiceController类来执行此操作吗?您对此有何建议? 最佳答案 ServiceController类包含一个采用int的ExecuteCommand方法。因此,如果您可以使用非常有限的参数,您的两个服务可以通过相互发送ExecuteCommand消息来进行通信。但是,正如其他张贴者评论的那样,WCF可能是更好的答案。您可以创建命名管道或在

java - Windows 中 Java 和 C 之间的任何 IPC 机制——不需要套接字

我的要求是使用JSON字符串在Windows上的C客户端和Java服务器之间进行IPC。刚刚意识到我不能在Windows中通过java使用命名管道("\.\pipe\filename")。我不太热衷于使用任何基于网络的架构,因为它会变得更加复杂以确保安全性和速度。请推荐您碰巧知道的任何共享内存/快速解决方案?提前致谢:) 最佳答案 您可以在Windows上使用命名管道;thisquestion和thisquestion的答案给出了不同的解决方案。除此之外,通过使用llvm(在您的情况下为clang),然后使用LLJVMTransla

windows - 我可以使用什么来代替 Unix 管道在 Windows 上进行进程间通信?

我有一个启动子进程的应用程序。子进程从标准输入读取要操作的文件。对于某些操作,它需要一个输入文件,其中包含有关如何处理它所操作的文件的信息——我们称之为“控制文件”。控制文件的名称也从标准输入中读取。父应用程序可以使用临时文件作为控制文件,但我更愿意避免使用真正的磁盘备份文件。在Linux上,这很简单:我可以创建一个Unix管道,fork,在启动子进程之前关闭管道的各个端点,然后使用/dev/fd/3(或任何文件描述符)作为控制文件名,然后将控制数据写入父应用程序中的管道。或者,我可以在/tmp(或其他任何内容)中使用命名管道。我怎样才能在Windows上实现类似的功能?Windows