GVKun编程网logo

有什么好办法让D-Bus这样的东西可以通过防火墙在多台Linux机器上工作?

22

对于想了解有什么好办法让D-Bus这样的东西可以通过防火墙在多台Linux机器上工作?的读者,本文将是一篇不可错过的文章,并且为您提供关于.m文件到linux中的可执行文件以在另一台linux机器上运

对于想了解有什么好办法让D-Bus这样的东西可以通过防火墙在多台Linux机器上工作?的读者,本文将是一篇不可错过的文章,并且为您提供关于.m文件到linux中的可执行文件以在另一台linux机器上运行、c – 我可以在Redhat Linux机器上使用在Ubuntu上编译的共享库吗?、c盘用户里的东西可以随便删除吗?删除后有什么后果?、iphone – 有什么办法让drawRect工作现在吗?的有价值信息。

本文目录一览:

有什么好办法让D-Bus这样的东西可以通过防火墙在多台Linux机器上工作?

有什么好办法让D-Bus这样的东西可以通过防火墙在多台Linux机器上工作?

D-Bus规范说

D-Bus是应用程序彼此交谈的简单方法…目前,通信应用程序在一台计算机上…

我想要D-Bus之类的东西,但是可以在多台Linux机器上工作,并且可能会涉及到防火墙。 例如,如果我的邮件服务器决定接收到一个重要的信息,我希望它将一个事件发送到我家里的电脑可以看到的公共汽车,并可能启动一个linpopup窗口。

我感兴趣的事件比较less见,所以低性能技术是可以的。 但我宁愿不重新发明任何车轮。 我还希望尽可能多的用shell脚本或者其他高级语言编写,而且尽可能less用C语言编写(但是如果需要的话,我愿意调用C API)。

文件更改了事件networking共享

在C#中检测系统醒来的事件

在Windows中集中应用程序更改事件

linux – 不能让eventfd和epoll一起工作

点击后禁用button

我解释官方的D-Bus网页的方式,他们说可以让D-Bus与多台计算机通话,但是这样做是行不通的 。

编辑 :我对D-Bus的吸引力是发布和订阅的模式:

观察有趣事件的机器将该事件发布到“系统”。

一个对特定事件感兴趣的机器只赞同这些事件。 当事件发生时,“系统”让机器知道。

在D-Bus中,“系统”是一台机器。 我想为多台机器类似的东西。 这就排除了像机器之间的TCP或SMTP通信这样的直接解决scheme。 但我很高兴有一个中央服务器接收所有发布和订阅请求。 我开始认为构build我自己比理解高级消息队列协议(AMQCP)更容易,这对我来说太过于高级了。

性能不是对象。 简单是一个对象。

再一次:我应该看什么软件?

创build事件的数量是否有限制?

使用事件在Windows中观看,设置和获取主动语言

从另一个Windows应用程序捕获用户事件(button点击等)

为什么在OnClick之前调用Click,我该如何解决?

事件可以是进程间的吗?

管理应用程序之间的消息和通信的“新事物”,显然是兔子。

是AMQP的实现,它建立了消息传递,路由和安全性…

检查这个:

http://www.rabbitmq.com

http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol

您应该搜索消息传递解决方案,但这些解决方案取决于您打算使用哪种语言.Java已经有一段时间称为JMS(Java消息服务)。 然而其他的实现存在。

ZeroMQ具有API绑定:C,C ++,Python,.NET / Mono等等

OpenAMQ的 API绑定为:Python,Java,Ruby和C

我对于不同的框架没有经验,所以我不能告诉你使用什么,但是你可以给这些框架。

也许我错过了这个观点(完全可能!),但为什么不使用SMTP并发送电子邮件呢? 或TCP数据包,并在另一边有一个监听程序?

我知道没有这样的现成解决方案。

我的建议是编写脚本使用curl或wget将HTTP POST请求发送到一个非常简单的Web应用程序,其中包含您的信息。 而另一台机器间隔轮询相同的网站,并获取信息。

彗星可以改善民意调查,但可能需要更多努力。

基于TCP / IP的消息队列(MQ)/面向消息的中间件(MOM)解决方案应满足您的需求。 大多数成熟的产品为各种语言提供本地语言绑定。 我已经与ActiveMQ运气好,它有一个CLI界面,可能足以执行简单的脚本任务。

有一些背景可以在这里找到: http : //en.wikipedia.org/wiki/Message-oriented_middleware

祝你好运,

香农

自从我的研究把我引向这个古老的问题之后,又发生了很多事情,我想补充一下。

您希望查看作为物联网标准的MQTT。 自2016年起,这是一个ISO和oasis标准。http: //mqtt.org/

这是非常简单的使用和设计是轻量级的。 原则是发布/订阅。

一个非常好的实现是在Eclipse下的Mosquitto https://mosquitto.org/ 。 Eclipse Paho项目中有客户端库,位于https://eclipse.org/paho/ 。

如果您有兴趣尝试较低层协议,则可以尝试SOAP。 它不像二进制协议那样高效,而且你必须自己做更高级别的排队,但是它可以通过web代理和SMTP服务器来运行。 有一个体面的PERL实施,我已经尝试过。

欲了解更多信息:

http://www.w3schools.com/soap/default.asp

您应该考虑在机器之间桥接D-Bus消息。 编写一个消息桥应用程序,将接收D-Bus消息,过滤它们并发送某些消息到AMQP主题交换。 这可以很容易地用RabbitMQ作为MQ代理完成,花时间学习AMQP模型是值得的。 RabbitMQ网站充满了文档,教程,博客和常见问题解答。

AMQP的一个典型用途是拥有一个消息生成器进程,然后是一个消息使用者进程,它可以位于不同的机器上。 生产者只需连接到broker,然后使用路由密钥标签将消息发布到主题交换中。 Exchange是一个将消息路由到队列上的进程。 消息使用者也连接到代理,但它可能不是同一个代理。 然后消费者声明要使用的队列名称。 并使用绑定键将该队列名称绑定到指定的Exchange。 绑定密钥是与进入交换机的任何路由密钥匹配的模式。 在最简单的情况下,路由键和绑定键是相同的,但是当绑定包含通配符模式时更有趣。

如果你真的不想学习AMQP,那么使用0MQ来连接机器。 0MQ非常简单,基本上允许你拥有多个端点的套接字。

.m文件到linux中的可执行文件以在另一台linux机器上运行

.m文件到linux中的可执行文件以在另一台linux机器上运行

嗨,我在MATLAB的Linux工作。 我想将我的.m文件转换成.exe或一些可执行文件,以便我可以在另一台linux机器上运行它。我试着做mcc -m filename.m -o newfile

但它会创buildrun_newfile.sh和newfile.o文件。 如何将这个.sh文件转换成.exe文件,或者如何在其他机器上运行.sh文件。 请帮忙

解决:我解决了这个问题。 我用mcc -mv filename.m

命令创build一个可执行文件,我可以运行与./filename .m文件具有相同名称的可执行文件

在壳里。 而且我们还需要检查MCR是否安装。 如果不是,我们需要安装MCR。 感谢您的回复。

“ant -version”返回/ usr / bin / build-classpath:错误:找不到指定的jar文件

模拟ARM代码

vim远程编辑:ftplugin或远程vim通过ssh

如何在string字段中使用多个逗号格式化.CSV文件的date字段

Shell脚本 – Linux

使用ALSA查找进程声音快速

MysqL远程连接

使用mmap和madvise来处理巨大的页面

通过环境variables提供ssh密钥

快速的grep / grep只有行号?

您可以通过sh run_newfile.sh在其他Linux机器上运行创建的文件。 你不能创建Linux机器上的Windows机器的exe文件。 为了创建Windows可执行的EXE文件,你必须使用Windows机器。

如果你想使用MATLAB编译器来生成Windows可执行文件(.exe文件),则必须在Windows机器上运行它。 如果你在Linux机器上运行它,它将产生适合Linux的输出,就像你看到的那样。

您的MATLAB许可证是跨平台的,您可以多次安装,因此您可以将其安装在Windows和Linux上(只要您不同时使用多个安装中的两个以上)。

如果您没有Windows的安装文件,只要您的许可证处于维护状态,您可以登录到您的MathWorks帐户下载它们。

c – 我可以在Redhat Linux机器上使用在Ubuntu上编译的共享库吗?

c – 我可以在Redhat Linux机器上使用在Ubuntu上编译的共享库吗?

我在Ubuntu 9.10桌面上编译了一个共享库.我想将共享库发送给拥有Red Hat Enterprise 5盒的联合开发人员.

他可以在他的机器上使用我的共享库吗?

解决方法

第一点:关于编译器版本的所有答案似乎都是错误的.重要的是联系(当然还有架构).

如果将.so文件复制到启动系统(例如,复制到其自己的/usr/local/*或/ opt / *目录中),则尝试使用LD_PRELOAD环境设置运行预期的可执行文件.如果链接器(ld-linux.so)设法解析两者之间的所有符号,则程序应加载并运行.

所以它应该是可能的,而且相当安全(只要你没有覆盖任何现有的系统库并只使用LD_ * /etc/ld.so.preload(在chroot中?)魔术来链接目标此库的可执行文件.

但是,我认为这是一个坏主意.您有包管理问题. Ubuntu和Red Hat都有精美的包管理工具.使用它们! (注意,提出有关包管理的问题的适当位置是ServerFault或SuperUser,绝对不是SO).

c盘用户里的东西可以随便删除吗?删除后有什么后果?

c盘用户里的东西可以随便删除吗?删除后有什么后果?

不建议随便删除 c 盘用户文件夹中的内容,因为可能导致:数据丢失:用户文件夹包含个人文件和设置。程序无法正常工作:用户文件夹中存储配置文件和缓存。系统不稳定:用户文件夹包含操作系统临时文件。安全问题:用户文件夹中包含密码等敏感信息。

c盘用户里的东西可以随便删除吗?删除后有什么后果?

C盘用户文件夹中的内容可以随便删除吗?

不建议随便删除C盘用户文件夹中的内容。这样做可能会对您的系统和数据造成严重的后果。

可能的删除后果:

  • 数据丢失:用户文件夹包含个人文件和设置,例如文档、照片、音乐和书签。删除这些文件将导致它们永久丢失。
  • 程序无法正常工作:某些程序在用户文件夹中存储配置文件和缓存。删除这些文件可能会导致程序无法正常运行。
  • 系统不稳定:用户文件夹包含操作系统的一些临时文件。删除这些文件可能会导致系统不稳定或死机。
  • 安全问题:用户文件夹中的某些文件包含敏感信息,例如密码和登录详细信息。删除这些文件可能会危及您的帐户和系统的安全性。

建议做法:

  • 仅删除您确信不再需要的文件。
  • 删除文件前,请创建备份。
  • 如果您不确定某个文件是否可以删除,请咨询专业人士或在线搜索。

以上就是c盘用户里的东西可以随便删除吗?删除后有什么后果?的详细内容,更多请关注php中文网其它相关文章!

iphone – 有什么办法让drawRect工作现在吗?

iphone – 有什么办法让drawRect工作现在吗?

原来的问题………………………………………..

如果你是drawRect的高级用户,你会知道,当然drawRect将不会实际运行,直到“所有处理完成。

setNeedsdisplay将视图标记为无效和操作系统,并且基本上等待,直到所有处理完成。这可能是令人愤怒的常见情况下,你想有:

>视图控制器1
>启动一些功能2
>增量3

>创造一个越来越复杂的图稿和4
>在每一步,你setNeedsdisplay(错!)5

>直到所有的工作完成6

当然,当你做上面的1-6,所有这一切发生的是drawRect只在第6步后运行一次。

您的目标是在第5点刷新视图。该怎么办?

对原问题的解决……………………………………… 。

总之,你可以(A)背景的大画,并调用前台的UI更新或(B)可争辩地有四个“立即”方法建议不使用后台进程。对于什么工作的结果,运行演示程序。它有#defines为所有五种方法。

由汤姆·斯威夫特介绍的真正令人惊讶的替代解决方案………………

汤姆·斯威夫特解释了一个惊人的想法,很简单地操纵运行循环。以下是触发运行循环的方法:

[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate date]];

这是一个真正令人惊叹的工程。当然,在操作运行循环时应​​该非常小心,并且许多人指出这种方法是专家级的。

出现的奇怪问题……………………………………… 。

即使一些方法工作,他们实际上并不“工作”,因为有一个奇怪的进步 – 慢下来的神器,你会看到在演示中清楚。

滚动到我在下面粘贴的“答案”,显示控制台输出 – 你可以看到它是如何逐渐减慢。

这里是新的SO问题:
Mysterious “progressive slowing” problem in run loop / drawRect

这里是V2的演示应用程序…
http://www.fileswap.com/dl/p8lU3gAi/stepwiseDrawingV2.zip.html

你会看到它测试所有五种方法,

#ifdef TOMSWIFTMETHOD
 [self setNeedsdisplay];
 [[NSRunLoop currentRunLoop]
      runMode:NSDefaultRunLoopMode beforeDate:[NSDate date]];
#endif
#ifdef HOTPAW
 [self setNeedsdisplay];
 [CATransaction flush];
#endif
#ifdef LLOYDMETHOD
 [CATransaction begin];
 [self setNeedsdisplay];
 [CATransaction commit];
#endif
#ifdef DDLONG
 [self setNeedsdisplay];
 [[self layer] displayIfNeeded];
#endif
#ifdef BACKGROUNDMETHOD
 // here,the painting is being done in the bg,we have been
 // called here in the foreground to inval
 [self setNeedsdisplay];
#endif

>你可以看到自己哪些方法工作,哪些不工作。
>你可以看到奇怪的“渐进减速”。为什么会发生?
>你可以看到有争议的TOMSWIFT方法,实际上没有任何问题响应。点击以随时响应。 (但仍然是奇怪的“进步 – 放缓”的问题)

因此,压倒性的事情是这种奇怪的“进步 – 慢下来”:在每次迭代,由于未知的原因,一个循环所需的时间死亡。注意,这适用于“正确”(背景看)或使用“立即”方法之一。

实用解决方案

对于任何人在未来阅读,如果你实际上无法让它在生产代码中工作,因为“神秘逐渐减速”… Felz和Void都提出了惊人的解决方案在其他具体问题,希望它有帮助。

解决方法

对用户界面的更新发生在当前通过运行循环的结尾。这些更新在主线程上执行,所以在主线程中长时间运行的任何东西(冗长的计算等)将阻止接口更新启动。此外,在主线程上运行一段时间的任何东西也会导致触摸处理无响应。

这意味着没有办法“强制”UI刷新从在主线程上运行的进程中的某个其他点发生。以前的陈述是不完全正确的,汤姆的答案显示。您可以允许运行循环在主线程上执行的操作中完成。但是,这仍然可能会降低应用程序的响应能力。

一般来说,建议您将需要一段时间执行的任何内容移动到后台线程,以便用户界面保持响应。但是,您希望对UI执行的任何更新都需要在主线程上完成。

也许在SNow Leopard和iOS 4.0下最简单的方法是使用块,如下面的基本示例:

dispatch_queue_t main_queue = dispatch_get_main_queue();
dispatch_async(queue,^{
    // Do some work
    dispatch_async(main_queue,^{
        // Update the UI
    });
});

上面的做一些工作部分可能是一个冗长的计算,或循环多个值的操作。在此示例中,仅在操作结束时更新UI,但是如果您希望在UI中进行连续进度跟踪,则可以将调度放置到需要执行UI更新的主队列。

对于较旧的操作系统版本,您可以手动或通过NSOperation中断后台线程。对于手动背景线程,可以使用

[NSThread detachNewThreadSelector:@selector(doWork) toTarget:self withObject:nil];

要么

[self performSelectorInBackground:@selector(doWork) withObject:nil];

然后更新您可以使用的UI

[self performSelectorOnMainThread:@selector(updateProgress) withObject:nil waitUntilDone:NO];

注意,我发现在以前的方法中的NO参数是需要获取不断的UI更新,同时处理一个连续的进度条。

This sample application我为我的类创建说明如何使用NSOperations和队列执行后台工作,然后更新UI完成时。此外,我的Molecules应用程序使用后台线程来处理新的结构,状态栏随着进度的更新而更新。你可以下载源代码看看我是如何实现的。

关于有什么好办法让D-Bus这样的东西可以通过防火墙在多台Linux机器上工作?的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于.m文件到linux中的可执行文件以在另一台linux机器上运行、c – 我可以在Redhat Linux机器上使用在Ubuntu上编译的共享库吗?、c盘用户里的东西可以随便删除吗?删除后有什么后果?、iphone – 有什么办法让drawRect工作现在吗?的相关知识,请在本站寻找。

本文标签: