问题标签 [inter-process-communicat]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何使用网络进程间的命名管道与两个 c# 进程通信
我的网络上有两个客户端(Client-PC1 + Client-PC2)。我喜欢在每个客户端上运行一个小型 c# Forms/Console 应用程序,并且我喜欢在这些应用程序之间进行通信。
我喜欢从 Client-PC1 触发 Client-PC2 上的应用程序。(在代码部分:menuItem1_Click)我已经做了一些研究,并在 TechNet 上找到了这篇文章:如何:使用命名管道进行网络进程间通信
但是我有一个错误或误解:在服务器端可以处理特定数量的线程(目前:numThreads = 4)
因此,如果我从 Client-PC1 触发超过 4 次,则服务器端(Client-PC2)正在关闭整个应用程序......
如何更改此代码以接受超过 4 个请求/触发器?总共只有 1-2 台计算机将连接到服务器但发送多个请求。
我认为我在发送请求/触发器后在客户端做错了什么?
有任何想法吗?
客户代码:
服务器代码:
c++ - 如何在 Ruby 和另一种语言之间共享文本文件(或互斥体/信号量)?
我有一个 C++ 程序将数据写入一个名为“history.txt”的文本文件。我希望它连续写入,除非我的 Ruby 进程决定要从中读取。
这个问题的解决方案显然是互斥锁,但我只发现了在用相同语言编写的进程之间共享互斥锁的示例。
我是否必须在两个进程之间使用命名管道笨拙地实现这一点,还是有更简单的方法?
networking - 使用网络连接进行应用程序间通信是不好的做法吗?
我有两个应用程序需要在同一系统上相互通信。
我一直在使用非常奇怪的做法,即在两个应用程序之间打开 TCP COM 通道进行通信。
无论如何,这种做法是否令人不悦?有没有其他选择(除了使用stdio,由于其他原因不可能)。
是否对最大传输速率和/或所涉及的任何延迟有限制(与管道 stdio 相比)?
我正在为服务器和客户端使用本地(127.0.0.1)地址,连接是否可以保证保持在本地计算机本身内,或者它是否可以在返回到自身之前中继最近的路由器并且网卡是否会影响连接的属性呢?
vb.net - 进程间通信的方法论
我计划使用 VB.NET 中的控制台应用程序开发大富翁游戏,但使用单独的 GUI(可能是表单应用程序)根据控制台应用程序中的信息显示大富翁板的状态,以便它可以被忽略或按照玩家的意愿使用。我一直在研究在两个程序之间发送信息的方法,并且遇到了管道,除了它们看起来很复杂,如果可以避免的话,我想使用不同的方法。以下是我目前正在考虑发送信息的方法 - 我想知道是否有任何方法可以改进这种方法,或者如果你认为它完全愚蠢,我应该只使用 Pipes -
程序 1 是控制一切的控制台应用程序:游戏的状态取决于控制台。Program 2 是 GUI/Forms 应用程序,它遵循 Program 1 发送的指令并相应地显示板。程序 1 和程序 2 使用两个文本文件 Command.txt 和 CommandAvailable.txt 进行通信。当程序 1 发生变化时 - 例如玩家移动 - 生成命令字符串并将其添加到队列中。程序 1 不断检查 CommandAvailable.txt 以确保文件为空,如果是,则清除 Command.txt,然后将队列中的每个命令字符串附加到 Command.txt。完成后,将任意文本添加到 CommandAvailable.txt,例如“CommandAvailable”。
程序 2 不断检查 CommandAvailable.txt 直到它不为空,这意味着程序 1 已向 Command.txt 添加了至少一个命令。程序 2 然后读取 Command.txt 上的每条指令,并将其添加到另一端的队列中。然后清除 CommandAvailable.txt,这将允许程序 1 向 Command.txt 添加更多命令(因为它仅在 CommandAvailable.txt 为空且尚未被自己标记时添加命令。)程序 2 上的单独线程清空命令字符串的队列,解析它们并执行它们。
例如,在控制台中,玩家 1 可能会移动到特拉法加广场(或任何该广场的名称)。程序 1/控制台会将命令“move player1 trafalgar_square”添加到队列中,然后检查 CommandAvailable.txt,如果它为空,将队列中的所有命令添加到 Command.txt。程序 2/GUI 将检查 CommandAvailable.txt,因为它已被程序 1 标记,读取命令,将其添加到队列中,然后将代表玩家 1 的图片框移动到正方形。
如果您认为这种方法可以改进,或者如果您认为它只是愚蠢并且有更好的选择,或者我应该只使用 Pipes,请告诉我。我将使用 VB.NET。
c# - 进程间通信选项
我需要在一个应用程序内订阅另一个应用程序公开的事件。我注意到许多人认为使用 WCF 命名管道是最佳实践。如果我选择 WCF 命名管道,我将不得不使用 IIS,我对吗?
顺便说一句,我一般有什么选择?
process - 什么是 WinRT 远程处理?
我正在阅读有关 Windows Phone 8 中 IPC 的内容,并且遇到了 Peter Torr 关于使用命名事件来协调前台应用程序和后台代理的文章。在文章的底部,他提到WinRT remoting
了在前台和后台进程之间进行 IPC 的先进技术。
那么是什么WinRT remoting
?它与某种方式有关out of process COM server
吗?
sockets - 如何在两个端口之间的本地主机中捕获数据包
我有两个使用套接字在同一台机器(本地主机)上通信的应用程序。如果应用程序在不同的机器上,我可以使用 Wireshark。但是如何在同一台机器上捕获数据包。
我不知道应用程序在哪个端口号上进行通信。因为我正在使用库调用并且不知道较低级别的详细信息。
我们在 Ubuntu 和 Windows XP 上运行我们的应用程序。
gcc - 无法编译 boost::condition_variable cond_
我有以下课程 -
boost::condition_variable cond_;
当我尝试编译时 -
[rmitra@butterfly boost]$ make EXE=thread_safe_stack
g++ -L /usr/local/lib -lboost_thread -o thread_safe_stack thread_safe_stack.cpp
我收到以下错误 -
thread_safe_stack.cpp:25: 错误:命名空间 'boost' 中的 'condition_varaible' 没有命名类型
thread_safe_stack.cpp:在成员函数'void thread_safe_stack::push(const T&)'中:
thread_safe_stack.cpp:34:错误:“cond_”未在此范围内声明
thread_safe_stack.cpp:在成员函数'void thread_safe_stack::pop(T&)'中:
thread_safe_stack.cpp:42: 错误: 'cond_' 未在此范围内声明
make: * [exe] 错误 1
请解释问题是什么.. 我使用的是 boost 1.54
我的源文件中包含以下标头-
java - Java 应用程序和本地服务器之间的进程间通信
首先向所有程序员干杯[今天=程序员日:)]
其次,我正在开展一个项目,其中规范要求使用服务器作为前端,并在后端使用应用程序。该项目是一个先进的智能家居系统。服务器将通过互联网处理来自客户端的命令(比方说,就像来自屋外的遥控器)并将它们(通过通信渠道)发送到将处理主要逻辑的应用程序(计划使用 JAVA 应用程序)像控制硬件(灯...),从麦克风(本地麦克风)读取和访问数据库以充当语音识别系统(离线)。
现在我仍处于规划阶段,我不确定哪种技术最适合这个项目。我正在考虑使用Node.js或Apache作为服务器,使用JAVA应用程序作为后端,并为应用程序的 SRS 使用任何SQL 数据库。
我希望这张图清楚地展示了系统是如何工作的:
主要问题是:
使 Java 应用程序与服务器通信的最佳方式是什么(通信通道 [必须是双向的])?
并且您是否为此工作推荐了除上述服务器之外的特定服务器?
到目前为止我的想法是:
1- JSP 和 servlet(使服务器也是应用程序)。但我不想让服务器处理离线的东西,而且我不确定 java servlet 是否可以访问硬件接口。我还希望服务器与做出关键决策分开(出于安全原因的不同层,因为它不会像本地 [离线] 系统那样频繁使用)。
2-沟通渠道:
A-共享文件,但这是一个坏主意,因为我不希望应用程序不时检查文件内容是否更改(收到命令)或不更改(过度操作)。
B- A 通过端口的进程间通信(套接字通信)似乎是最好的解决方案,但我不知道在操作成本和通信错误方面会如何转变。
使用的操作系统: Linux Raspbian
编辑:
我确信 ZMQ+Apache 足以胜任这项任务,但与 WebServices(如 SOAP)相比如何?就标准实现和安全性而言,WebServices 会是更好的解决方案吗?
欢迎所有相关建议,TQ
multithreading - 软件模块通过消息传递进行通信的“多进程”与“单进程多线程”
我们需要构建一个软件框架(或中间件),以便在一台机器上运行的不同软件组件(或模块)之间实现消息传递。该框架将提供以下功能:
- 模块之间的通信是通过“消息传递”。
- 每个模块都有自己的消息队列和消息处理线程,它们将同步处理每个传入的消息。
根据上述要求,以下哪种方法是正确的(及其推理)?:
- 将模块实现为进程,并通过共享内存进行消息传递
- 将模块实现为单个进程中的线程,并通过将消息对象推送到目标模块的消息队列来进行消息传递。
当然,有一些明显的利弊:
- 在 Option-2 中,如果一个模块导致分段错误,则该进程(从而整个应用程序)将崩溃。并且一个模块可以直接访问/改变另一个模块的内存,这可能导致难以调试的运行时错误。
- 但是使用 Option-1,您需要处理您需要通信的模块刚刚崩溃的状态。如果软件中有 N 个模块,则系统可能有 2^N 多个存活/崩溃状态,这些状态会影响模块上运行的算法。
- 同样在 Option-1 中,发送者不能假设接收者已经收到了消息,因为它可能在那个时候崩溃了。(但系统可以提醒所有模块某个特定模块已崩溃;这样,发送方可以断定接收方将无法处理该消息,即使它已成功接收该消息)
我赞成选项 2,但我不确定我的论点是否足够可靠。你有什么意见?
编辑:根据要求澄清,这里有更多的规范细节:
- 这是一个将在 Linux 操作系统上运行的嵌入式应用程序。
- 不幸的是,我不能告诉你项目本身,但我可以说项目有多个组件,每个组件将由自己的团队(3-4人)开发,并决定这些之间的沟通组件/模块是通过某种消息传递框架。
- C/C++ 将用作编程语言。
- 'Module Interface API' 将自动提供给模块开发人员的是:(1) 消息/事件处理程序线程循环,(2) 同步消息队列,(3) 函数指针成员变量,您可以在其中设置您的消息处理函数。