diff --git a/examples/c/proactor/broker.c b/examples/c/proactor/broker.c
index 79f34bc..e11a8bd 100644
--- a/examples/c/proactor/broker.c
+++ b/examples/c/proactor/broker.c
@@ -446,9 +446,11 @@
 
   /* Parse the URL or use default values */
   pn_url_t *url = urlstr ? pn_url_parse(urlstr) : NULL;
-  const char *host = url ? pn_url_get_host(url) : "localhost";
-  const char *port = url ? pn_url_get_port(url) : NULL;
-  if (!port) port = "amqp";
+  /* Listen on IPv6 wildcard. On systems that do not set IPV6ONLY by default,
+     this will also listen for mapped IPv4 on the same port.
+  */
+  const char *host = url ? pn_url_get_host(url) : "::";
+  const char *port = url ? pn_url_get_port(url) : "amqp";
 
   /* Initial broker_data value copied to each accepted connection */
   broker_data_t bd = { false };
diff --git a/examples/c/proactor/libuv_proactor.c b/examples/c/proactor/libuv_proactor.c
index ce5b948..8dd2706 100644
--- a/examples/c/proactor/libuv_proactor.c
+++ b/examples/c/proactor/libuv_proactor.c
@@ -425,11 +425,12 @@
   }
 }
 
-static int leader_resolve(psocket_t *ps, uv_getaddrinfo_t *info) {
+static int leader_resolve(psocket_t *ps, uv_getaddrinfo_t *info, bool server) {
   int err = leader_init(ps);
+  struct addrinfo hints = { 0 };
+  if (server) hints.ai_flags = AI_PASSIVE;
   if (!err) {
-    err = uv_getaddrinfo(&ps->proactor->loop, info, NULL,
-                         fixstr(ps->host), fixstr(ps->port), NULL);
+    err = uv_getaddrinfo(&ps->proactor->loop, info, NULL, fixstr(ps->host), fixstr(ps->port), &hints);
   }
   return err;
 }
@@ -437,7 +438,7 @@
 static void leader_connect(psocket_t *ps) {
   pconn *pc = as_pconn(ps);
   uv_getaddrinfo_t info;
-  int err = leader_resolve(ps, &info);
+  int err = leader_resolve(ps, &info, false);
   if (!err) {
     err = uv_tcp_connect(&pc->connect, &pc->psocket.tcp, info.addrinfo->ai_addr, on_connect);
     uv_freeaddrinfo(info.addrinfo);
@@ -450,7 +451,7 @@
 static void leader_listen(psocket_t *ps) {
   pn_listener_t *l = as_listener(ps);
   uv_getaddrinfo_t info;
-  int err = leader_resolve(ps, &info);
+  int err = leader_resolve(ps, &info, true);
   if (!err) {
     err = uv_tcp_bind(&l->psocket.tcp, info.addrinfo->ai_addr, 0);
     uv_freeaddrinfo(info.addrinfo);
diff --git a/examples/c/proactor/receive.c b/examples/c/proactor/receive.c
index 303e348..acdae0c 100644
--- a/examples/c/proactor/receive.c
+++ b/examples/c/proactor/receive.c
@@ -185,8 +185,7 @@
     /* Parse the URL or use default values */
     pn_url_t *url = urlstr ? pn_url_parse(urlstr) : NULL;
     const char *host = url ? pn_url_get_host(url) : NULL;
-    const char *port = url ? pn_url_get_port(url) : NULL;
-    if (!port) port = "amqp";
+    const char *port = url ? pn_url_get_port(url) : "amqp";
     strncpy(app.address, (url && pn_url_get_path(url)) ? pn_url_get_path(url) : "example", sizeof(app.address));
 
     /* Create the proactor and connect */
diff --git a/examples/c/proactor/send.c b/examples/c/proactor/send.c
index 68ba0c8..5d58895 100644
--- a/examples/c/proactor/send.c
+++ b/examples/c/proactor/send.c
@@ -187,8 +187,7 @@
     /* Parse the URL or use default values */
     pn_url_t *url = urlstr ? pn_url_parse(urlstr) : NULL;
     const char *host = url ? pn_url_get_host(url) : NULL;
-    const char *port = url ? pn_url_get_port(url) : NULL;
-    if (!port) port = "amqp";
+    const char *port = url ? pn_url_get_port(url) : "amqp";
     strncpy(app.address, (url && pn_url_get_path(url)) ? pn_url_get_path(url) : "example", sizeof(app.address));
 
     /* Create the proactor and connect */
