dbus是什么,Windows下,dbus的hello world

      dbus的是一个低延迟,低开销,高可用性的IPC机制。通过dbus的daemon,可以实现进程间通信和函数调用。Windows下,dbus的开发库可以去这里(http://code.google.com/p/dbus-windows-installer/downloads/list)下载,在VS设置头文件和lib库的路径即可。若是要编写其Hello World,自然包含客户端和服务端两部分。下面的Hello World代码包含了发送消息和函数调用两部分,分别描述之。
      1) 信号
假设客户端发送消息,服务端接收。客户端发送消息的流程如下:
1.创建于dbus daemon的会话连接。
2.创建消息,若有消息参数,附加之(这个一般都有)
3.通过连接发送消息。
1: int main (int argc, char *argv[])
2: {
3: DBusError dberr;
4: DBusConnection *dbconn;
5: DBusMessage *dbmsg;
6: char *text;
7: 
8: // 初始话错误信息的结构体
9: dbus_error_init (&dberr);
10:
11: // 创建会话连接
12: dbconn = dbus_bus_get (DBUS_BUS_SESSION, &dberr);
13: if (dbus_error_is_set (&dberr)) {
14: fprintf (stderr, "getting session bus failed: %s\n", dberr.message);
15: dbus_error_free (&dberr);
16: return EXIT_FAILURE;
17: }
18: 
19: // 创建消息
20: dbmsg = dbus_message_new_signal ("/com/wiley/test",
21: "com.wiley.test",
22: "TestSignal");
23: if (!dbmsg) {
24: fprintf (stderr, "Could not create a new signal\n");
25: return EXIT_FAILURE;
26: }
27: 
28: // 消息中,附加文本
29: text = "Hello World";
30: if (!dbus_message_append_args (
31: dbmsg, DBUS_TYPE_STRING, &text, DBUS_TYPE_INVALID)) {
32: fprintf(stderr, "Out Of Memory!\n");
33: return EXIT_FAILURE;
34: }
35: 
36: // 发送消息
37: if (!dbus_connection_send (dbconn, dbmsg, NULL)) {
38: fprintf(stderr, "Out Of Memory!\n");
39: return EXIT_FAILURE;
40: }
41: dbus_connection_flush(dbconn);
42: 
43: printf ("Sending signal to D-Bus\n");
44: 
45: // 释放消息
46: dbus_message_unref (dbmsg);
47: 
48: // 释放会话连接
49: dbus_connection_unref (dbconn);
50: 
51: return EXIT_SUCCESS;
52: }
Tags:  dbusdea efdbus dbus是什么

延伸阅读

最新评论

发表评论