Starting the NetworkStreams. HTTP to www.google.com works
[cascardo/gnio.git] / test / test-stuff.c
1 #include <gio/gio.h>
2 #include <gnio/ginet4address.h>
3 #include <gnio/ginetaddress.h>
4 #include <gnio/gresolver.h>
5 #include <glib.h>
6 #include <glib/gprintf.h>
7
8 #ifdef G_OS_WIN32
9 # include <winsock2.h>
10 #endif
11
12 GMainLoop *loop;
13
14 static void print_address (GInetAddress *address, gpointer data);
15
16 static void
17 print_address (GInetAddress *address, gpointer data)
18 {
19         gchar *string = g_inet_address_to_string (G_INET_ADDRESS (address));
20
21         g_printf ("%s\n", string);
22
23         g_free (string);
24 }
25
26 static void
27 resolve_callback (GObject *source, GAsyncResult *result, gpointer data)
28 {
29         GError *error = NULL;
30
31         GResolver *resolver = G_RESOLVER (source);
32
33         GList *list;
34
35         list = g_resolver_resolve_list_finish (resolver, result, &error);
36
37         if (error) {
38                 g_error (error->message);
39                 return;
40         }
41
42         g_printf ("\nwww.google.com (list, async):\n");
43
44         g_list_foreach (list, (GFunc) print_address, NULL);
45
46         g_list_foreach (list, (GFunc) g_object_unref, NULL);
47
48         g_list_free (list);
49
50         g_main_loop_quit (loop);
51 }
52
53 int main (int argc, char *argv[])
54 {
55         GInetAddress *address;
56         GResolver *resolver;
57         GError *error = NULL;
58 #ifdef G_OS_WIN32
59         WSADATA wsaData;
60 #endif
61
62         g_thread_init (NULL);
63
64         g_type_init ();
65
66 #ifdef G_OS_WIN32
67         if (WSAStartup (MAKEWORD (2, 2), &wsaData) != 0)
68                 return 0;
69 #endif
70
71         loop = g_main_loop_new (NULL, FALSE);
72
73         address = (GInetAddress *) g_inet4_address_from_string ("127.0.0.1");
74
75         g_printf ("is floating: %d\n", g_object_is_floating (address));
76
77         g_printf ("%s:\n", g_inet_address_to_string (address));
78
79         g_printf ("is_any: %d, is_linklocal: %d, is_loopback: %d\n", g_inet_address_is_any (address), g_inet_address_is_linklocal (address), g_inet_address_is_loopback (address));
80
81         g_object_unref (address);
82
83         address = (GInetAddress *) g_inet4_address_from_string ("0.0.0.0");
84
85         g_printf ("\n%s:\n", g_inet_address_to_string (address));
86
87         g_printf ("is_any: %d, is_linklocal: %d, is_loopback: %d\n", g_inet_address_is_any (address), g_inet_address_is_linklocal (address), g_inet_address_is_loopback (address));
88
89         g_object_unref (address);
90
91         address = (GInetAddress *) g_inet4_address_from_string ("169.254.0.0");
92
93         g_printf ("\n%s:\n", g_inet_address_to_string (address));
94
95         g_printf ("is_any: %d, is_linklocal: %d, is_loopback: %d\n", g_inet_address_is_any (address), g_inet_address_is_linklocal (address), g_inet_address_is_loopback (address));
96
97         g_object_unref (address);
98
99         resolver = G_RESOLVER (g_object_new (G_TYPE_RESOLVER, NULL));
100
101         address = g_resolver_resolve (resolver, "www.yahoo.com", NULL, &error);
102
103         if (!address) {
104                 g_error (error->message);
105                 return 0;
106         }
107
108         g_printf ("\nwww.yahoo.com: %s\n", g_inet_address_to_string (address));
109
110         g_printf ("is_any: %d, is_linklocal: %d, is_loopback: %d\n", g_inet_address_is_any (address), g_inet_address_is_linklocal (address), g_inet_address_is_loopback (address));
111
112         g_object_unref (address);
113
114         g_resolver_resolve_list_async (resolver, "www.google.com", NULL, resolve_callback, NULL);
115
116         g_main_loop_run (loop);
117
118         return 0;
119 }