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: }
最新评论