求zeromq的多进程通讯例子
求各位大神帮帮忙,帮我写一个zeromq的多进程通讯的例子,要求如下:
1、用C/C++语言;
2、可以开启多个客户端,只有1个服务端;
3、客户端发送一条消息(如字符串)到服务端,然后其他客户端都能接收到这条消息,要求接收没有延迟,没有数据丢失;
4、不要网上的那个简单的“hello-world”程序,我想要的是多进程间的通讯,网上的都实现不了。
求帮忙啊,求帮忙
[解决办法]
做一个服务端就行了.
[解决办法]
网络方面的东西我只用socket写过,windows和Linux都写过。
用socket写server简单说就是在accept时每接受到一个connect就开启一个线程为其服务,将所有连接上来的客户端的套接字存放在一个全局的数组或链表中,接受到数据就广播就好啦。广播就是每个客户都给他send一下,如果你想要全部的代码的话,我估计贴都能贴死人。
windows下可以只多开一个线程,用event select来管理。
[解决办法]
看你的代码,可能zmq就是把socket包装在内部做成了一个SDK。
按你的程序,有两个客户端,那么你想实现你的功能,要做的第一点就是,server能够区分从不同客户端接收来的消息,并能有选择的向客户端发送消息,只要能区分,然后你再选择性的发送就好了。不知道你用的zmq里面有没有。
按socket的写法,如果用多线程,那么相应的线程只会收到它针对的那个客户端的消息,而用select也能通过一些办法区分,能够确保不乱。而选择性的发送消息,只能靠你自己来维护了,比如当客户端的个数大于两个之后,你只能给客户端发的数据加上数据头方式,在数据头里面你约定好一套识别接收对象的方式,解读了之后就选择性的发送,就能私聊了。
建议在server里自己定义一个结构体,里面包含了连接的句柄(如socket),IP,账号等等信息,看你想要什么,然后每连接上来一个client,你就填好一份结构体数据,然后存到一个数组或链表中(建议链表),就能够将他们维护起来了。