VC下使用何种IPC可以实现多进程之间的广播,最好有参考代码,谢谢VC下使用何种IPC可以实现多进程之间的广播,
VC下使用何种IPC可以实现多进程之间的广播,最好有参考代码,谢谢
VC下使用何种IPC可以实现多进程之间的广播,最好有参考代码,谢谢
例如:
一个主进程,三个从进程。
主进程广播通知三个从进程,如何利用windows的IPC实现?
求解,高手帮忙,谢谢!
[解决办法]
共享内存
[解决办法]
用多个单播模拟广播
[解决办法]
命名事件,SetEvent
[解决办法]
HWND_BROADCAST不能指定范围
[解决办法]
广播UDP包?
[解决办法]
[解决办法]socket 最灵活啊.
每个进程都监听一个知名端口.
任何一个进程有广告就挨个发送了.
[解决办法]HWND_BROADCAST内部也是像每个线程的窗口分别发,而且它会像当前桌面的所有顶层窗口发,你需要注册自定义消息来防止和其他程序的消息冲突
线程一旦调用了和窗口消息有关的api,就会变成ui线程,ui线程比非ui线程要多占很多资源
[解决办法]共享内存加命名事件,我觉得就行啊!
等待事件,就不需要轮询了,克服你二楼的弊端
[解决办法]肯定是服务端-客户端的形式了。
SOCKET的就不说了,广播在单机说白了就是遍历在线客户端发送副本。
WINDOWS的我就不说了,LINUX的话,不知道你的主从是怎么定义的,是父子进程关系管道就足够了。
没有亲属关系的话,主进程可以开消息队列,接受type1的消息,从进程向主进程的队列发送type1的登陆消息,其中内容为从进程自己的进程type=pid,从进程接着读消息队列的type=pid的应答即可,服务端回送应答时候就是type=pid的应答,这样主进程是单进程模型。
如果从进程预先创建好自己的消息队列,并把自己的消息队列ID通过type1发给主进程的消息队列,主进程可以fork一个子进程打开ID指向的消息队列,也就是主进程实现了并发模型。
FIFO和消息队列的工作原理是一样的,就不赘述了,主要考虑FIFO的并发写原子性问题,所以消息队列更适合。
[解决办法][解决办法][解决办法][解决办法]为什么不用管道,和socket差不多,不占端口
[解决办法]你用其他方法,内部实现也是遍历
[解决办法]N个进程只要其中一个监听一个知名端口就行.
后续进程绑定失败的就知道自己已经是客户端了. 然后发送数据就朝127.0.0.1 知名端口发就是了.
其他进程也是.取消息也一样.
[解决办法]CS模型
主进程(Server)
1)MsgWaitForMultipleObjects(),等待从进程注册、退出
2) 处理从进程注册
3) 处理从进程退出(可以监视进程HANDLE、也可以让从进程发个消息)
4)发消息通知每个从进程,PostThreadMessage
从进程(Client)
1) 启动时枚举进程列表,通过固定的进程exe名字,得到主进程的ThreadID
2) PostThreadMessage,发一个消息给主进程,让主进程进行注册处理
[解决办法]
PostMessage
[解决办法]
LRESULT SendMessage(
HWND hWnd, // handle of destination window
UINT Msg, // message to send
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
BOOL PostMessage(
HWND hWnd, // handle of destination window
UINT Msg, // message to post
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
[解决办法]
可以用socket广播udp包 我有代码 lixy50@gmail.com