日期:2014-05-18  浏览次数:20977 次

C#和delphi开发的两个本地程序如何进行进程间通信?
由于项目需要,C#写了一个监控程序,能实时监控本地和远程信息,现在需要把监控所得的的信息传递给delphi写的另一个本地程序,这应该需要用进程间通信,目前想到的办法有共享内存,sendmessage ,以及socket,疑惑的是不同的开发语言,这些方式能否行得通?sendmessage得向窗口发送消息,于是我不考虑使用。传输的数据量很小,就0 1 2 3 这么几个状态,C#监控端发,而delphi写的程序只要能收到就好。但是要求实时性比较好。请求各位帮助,我在进程间通信方面所知甚少,对网络也不熟悉,请帮我分析有哪些可行方式,当然能提供一定代码的话,更是求之不得了。我分比较少,希望五十不要嫌少。

------解决方案--------------------
socket当然行的通,跟语言无关,通过tcp协议,你只要做好链接和接收就行了
------解决方案--------------------
socket挺好的,而且你只是在本地使用,也不用去考虑一般的网络异常情况

另外你可以考虑把数据放到数据库或者一个文件里,用sendmessage告诉对方有数据了,让对方自己去取
------解决方案--------------------
1. WM_MESSAGE通过Win32API send/post message互相相应,适用于简单事件通知,不适合数据交互
2. PIPE
3. SOCKET
4. WebService
5. File + WM_MESSAGE
6. FileMapping
7. MSMQ
.........
------解决方案--------------------
进程间的通信你可以参考下WCF中的通信方式,MSMQ,TCP,IPC都行