草庐IT

java - 通过 TCP 使用 JeroMQ,有没有办法获取发件人的 IP?

我们的应用程序使用JeroMQ0.4.3在客户端应用程序和API之间发送消息。(使用ZAuth的曲线加密)。我们正在从代理中的ROUTER套接字获取客户端消息(MDP模式)。在代理中接收消息时查找发件人IP的最佳方法是什么?在ZeroMQ中,似乎可以使用ZMQ_SRCFD消息选项和getpeername()但我还没有找到将其转换为JeroMQ的方法。 最佳答案 最近的ZeroMQAPI确实定义了消息可能携带的ZMQ_SRCFD属性。事实A)人们基本上无法确定,远程系统使用什么ZeroMQAPI版本(2.x~3.x~4.2.2~?截至

publish-subscribe - 基于 TCP IP 的大规模 pubsub 系统

我正在设计一个基于TCP/IP的发布/订阅系统。预计这将具有很高的消息更新率和大量的订阅者。我之前看过CometD,但我们意识到它支持的Bayeux协议(protocol)只是Http上的JSON。我们不希望在这个系统中有Http开销。现在我正在寻找ZeroMQ以寻求可能的解决方案。是否有任何其他此类系统已被证明可以处理基于TCPIP的大规模发布/订阅?更新-我的发布者只是TCP/IP客户端,但我的订阅者是基于网络浏览器的小部件。据我了解,ZeroMQ不支持基于浏览器的订阅者的Http。这种情况有什么解决方法吗? 最佳答案 您似乎提

c++ - zeromq:PULL/PUSH 客户端在连接 31. windows 上的服务器后崩溃

我正在尝试在本地网络中使用PUSH/PULL模式进行分布式计算。到目前为止一切似乎都正常,然而,我发现在31worker(服务器)启动时客户端(呼吸机和收集器)应用程序崩溃。Windows上某个端口的连接是否有限制(在MacOsX上似乎不是这种情况)。我在zeromq示例中使用tcp传输端口和端口5555和5556。该行为是远程和本地工作人员的观察者。谢谢更新:这是代码(来自zmq指南的修改示例)#include#include#include#include#include#includeintmain(intargc,char*argv[]){zmq::context_tconte

c - Zeromq:使用 zmq 的 PUB/SUB 程序,不交换消息

我在zmq中编写了一个简单的PUB/SUB程序,但它不起作用。在server.c中,我所做的只是将服务器绑定(bind)到特定的套接字,然后广播一条消息“嗨!同样,在client.c中,我正在接收发送的字符串并打印它,但它总是跳过循环。当我运行客户端它没有收到来自server.c的任何消息。可能是什么错误?//server.c#include#include#include#includeintmain(void){//Prepareourcontextandpublishervoid*context=zmq_ctx_new();void*publisher=zmq_socket(co

tcp - ZeroMQ 客户端失去连接

我有一个客户端(PULL)连接到服务器(PUSH)。起初他们工作得很好。但稍后连接断开,客户端ZeroMQ不会尝试重新连接到服务器。一件神秘的事情是,如果我在客户端和服务器端执行netstat,客户端显示连接仍然​​是ESTABLISHED,而服务器端没有相应的条目。我想这就是客户端不重新连接的原因。PS:客户端和服务器在不同的IDC,两者之间有带宽限制。但是当断开连接发生时,我们的监视器显示它没有达到频带限制。而且,当我在服务器端执行netstat时(当连接正常时),有时Send-Q列非常大,然后下降到0。这就是我所拥有的全部信息。如果您需要更多详细信息,请告诉我。

python - 更改 IPC ://to tcp://python zmq (Windows)

我试图让python应用程序在Windows上运行,但我收到ZMQError:Protocolnotsupported这是因为Windows不支持ipc。根据我的阅读,从ipc到tcp协议(protocol)的更改应该与更改bind()中使用的字符串一样简单。master_addr='ipc://{0}/sailfish-master-{1}_{2}'.format(tempfile.gettempdir(),os.getpid(),subdomain.id)ipc_files.append(master_addr.replace('ipc://',''))sock=ctx.socke

video - zeromq 是点对点视频聊天的正确解决方案吗

我想知道我对zeromq的想法是否正确?我正在考虑使用zeromq编写一个点对点聊天应用程序,但当我进一步阅读它时,zeromq似乎比人们使用的(tcp套接字)更底层。zeromq是否适合编写点对点聊天应用程序,或者这个用例不适用? 最佳答案 首先,我不同意你关于zeromq比套接字更低级的说法。AFAICTzeromq提供了一个类似于套接字API的API。然而,它还可以处理其他事情,例如使用相同的发送调用向多个客户端发送消息。其次,您的问题不是很清楚:好是什么意思:易于编写(因为您指的是低级)、可靠、足够高效等?您可以使用任何您想

tcp - 我可以将 ZeroMQ 与基于软件的负载均衡器 HAProxy 一起使用吗?

HAProxy是一个基于软件的负载均衡器,支持http和tcp分布。如果我使用启用实用多播(pgm)的ZeroMQ,使用HAProxy作为zmq对等点之间的中介是否会与pgm冲突,或者我应该使用基于硬件的负载平衡器,如F5? 最佳答案 没有。PGM(IANAIP协议(protocol)编号113)不是TCP(IANAIP协议(protocol)编号6)。HAProxy是一个HTTP和TCP负载平衡器。 关于tcp-我可以将ZeroMQ与基于软件的负载均衡器HAProxy一起使用吗?,我们

sockets - ZeroMQ可以用来接受传统的socket请求吗?

我正在尝试使用ZeroMQ重写我们的一个旧服务器,现在我有以下服务器设置(适用于Zmq请求):using(varcontext=ZmqContext.Create())using(varserver=context.CreateSocket(SocketType.REP)){server.Bind("tcp://x.x.x.x:5705");while(true){...}如果我使用Zmq客户端库连接context.CreateSocket(SocketType.REQ),这种设置工作正常但不幸的是,我们有很多遗留代码需要连接到此服务器,并且套接字是使用.net套接字库创建的:Sock

tcp - 为什么 Windows7 上的 TCP/IP 需要 500 次发送才能预热? (w10,w8 证明没有受到影响)

我们在Windows7上看到ZeroMQ出现奇怪且无法解释的现象,通过TCP发送消息。(或通过inproc,因为ZeroMQ在Windows上在内部使用TCP进行信号传输。现象是前500条消息到达的速度越来越慢,延迟稳步上升。然后延迟下降,消息始终快速到达,但CPU/网络争用导致的峰值除外。此处描述了问题:https://github.com/zeromq/libzmq/issues/1608一直是500条消息。如果我们没有延迟地发送,那么消息会被分批处理,所以我们会看到这种现象会持续数千次发送。如果我们在发送之间延迟,我们会更清楚地看到图表。即使在发送之间延迟多达50-100毫秒也不