我必须创建单个服务器进程A和多个客户端进程(Es)。所有用户都应该使用Linux消息队列进行数据传递。信息将向两个方向流动。同时,多个客户端进程(Es)也可能已注册到服务器进程A。
目前,我只使用一个命名消息队列,它由Server Process A创建和打开,并由客户端进程(Es)使用/打开(仅)。这适用于两个流程场景(即一个服务器进程A和一个客户机进程B),但不适用于多个客户端进程(Es)和一个服务器进程。
我在这里面临的问题是设计/逻辑。如何从其他客户端进程(Es)解除服务器进程A上的多路复用消息,以及从服务器进程A返回到相应的客户端进程,或者可能它可以发送回所有客户端进程(Es),但必
首先,如果这个问题已经在这里,我很抱歉,但是我的Google技巧似乎让我失望了。
基本上,我有一个函数应该在任何时候检查任何传入的消息。还有一个全局变量,它应该在其中存储此消息。(我把这个函数放在线程中)
我想使用这样的方法检查传入的消息:
while (global_array[0] != '#') { } // all messages are padded with '#'
可悲的是,这似乎不起作用。
我试着使这个'global_array‘易失性,但是它不能与我用来接收的TCP函数相匹配。
我真的需要这个才行..。如有任何帮助,我将不胜感激。
编
我有一个类,它包含对通过TCP接收对象的工作线程的引用集合(每个客户端1个)。
我正尝试在我的类中创建一个方法getMessage(),它会一直等到任何一个工作线程收到消息并返回它。
我现在得到的是一个投票系统:
public Object getMessage() {
while (true) {
for (Worker w : workers.values())
if (w.msgNumber() != 0)
return w.getLastMsg();
Thread.s
我想要“发送一个消息”从一个线程到主程序扫描,我问如何给予“扫描”函数,或"cin“函数,一些东西停止等待。
你通常会在控制台上写一些东西,然后按下"enter“键。我怎么能从另一个线程中做同样的事情呢?
示例:
int main()
{
///// Some code to make the thread work ecc
std::cin >> mystring;
std::cout << mystring; // It should be "Text into mystring";
}
// From the