diff --git a/tools/inetcat.c b/tools/inetcat.c
index d67e972..403c4ff 100644
--- a/tools/inetcat.c
+++ b/tools/inetcat.c
@@ -200,10 +200,42 @@
         return 1;
     }
 
-    int devfd = usbmuxd_connect(dev->handle, device_port);
+    int devfd = -1;
+    if (dev->conn_type == CONNECTION_TYPE_NETWORK) {
+        unsigned char saddr_[32];
+        memset(saddr_, '\0', sizeof(saddr_));
+        struct sockaddr* saddr = (struct sockaddr*)&saddr_[0];
+        if (((char*)dev->conn_data)[1] == 0x02) { // AF_INET
+            saddr->sa_family = AF_INET;
+            memcpy(&saddr->sa_data[0], (char*)dev->conn_data+2, 14);
+        }
+        else if (((char*)dev->conn_data)[1] == 0x1E) { //AF_INET6 (bsd)
+#ifdef AF_INET6
+            saddr->sa_family = AF_INET6;
+            memcpy(&saddr->sa_data[0], (char*)dev->conn_data+2, 26);
+#else
+            fprintf(stderr, "ERROR: Got an IPv6 address but this system doesn't support IPv6\n");
+            free(dev_list);
+            return 1;
+#endif
+        }
+        else {
+            fprintf(stderr, "Unsupported address family 0x%02x\n", ((char*)dev->conn_data)[1]);
+            free(dev_list);
+            return 1;
+        }
+        char addrtxt[48];
+        addrtxt[0] = '\0';
+        if (!socket_addr_to_string(saddr, addrtxt, sizeof(addrtxt))) {
+            fprintf(stderr, "Failed to convert network address: %d (%s)\n", errno, strerror(errno));
+        }
+	devfd = socket_connect_addr(saddr, device_port);
+    } else if (dev->conn_type == CONNECTION_TYPE_USB) {
+        devfd = usbmuxd_connect(dev->handle, device_port);
+    }
     free(dev_list);
     if (devfd < 0) {
-        fprintf(stderr, "Error connecting to device!\n");
+        fprintf(stderr, "Error connecting to device: %s\n", strerror(errno));
         return 1;
     }
 
diff --git a/tools/iproxy.c b/tools/iproxy.c
index 787f098..8b57e94 100644
--- a/tools/iproxy.c
+++ b/tools/iproxy.c
@@ -233,12 +233,45 @@
 		return NULL;
 	}
 
-	fprintf(stdout, "Requesting connecion to %s device handle == %d (serial: %s), port %d\n", (dev->conn_type == CONNECTION_TYPE_NETWORK) ? "NETWORK" : "USB", dev->handle, dev->udid, device_port);
+	cdata->sfd = -1;
+	if (dev->conn_type == CONNECTION_TYPE_NETWORK) {
+		unsigned char saddr_[32];
+		memset(saddr_, '\0', sizeof(saddr_));
+		struct sockaddr* saddr = (struct sockaddr*)&saddr_[0];
+		if (((char*)dev->conn_data)[1] == 0x02) { // AF_INET
+			saddr->sa_family = AF_INET;
+			memcpy(&saddr->sa_data[0], (char*)dev->conn_data+2, 14);
+		}
+		else if (((char*)dev->conn_data)[1] == 0x1E) { //AF_INET6 (bsd)
+#ifdef AF_INET6
+			saddr->sa_family = AF_INET6;
+			memcpy(&saddr->sa_data[0], (char*)dev->conn_data+2, 26);
+#else
+			fprintf(stderr, "ERROR: Got an IPv6 address but this system doesn't support IPv6\n");
+			free(cdata);
+			return NULL;
+#endif
+		}
+		else {
+			fprintf(stderr, "Unsupported address family 0x%02x\n", ((char*)dev->conn_data)[1]);
+			free(cdata);
+			return NULL;
+		}
+		char addrtxt[48];
+		addrtxt[0] = '\0';
+		if (!socket_addr_to_string(saddr, addrtxt, sizeof(addrtxt))) {
+			fprintf(stderr, "Failed to convert network address: %d (%s)\n", errno, strerror(errno));
+		}
+		fprintf(stdout, "Requesting connecion to NETWORK device %s (serial: %s), port %d\n", addrtxt, dev->udid, device_port);
+		cdata->sfd = socket_connect_addr(saddr, device_port);
+	} else if (dev->conn_type == CONNECTION_TYPE_USB) {
+		fprintf(stdout, "Requesting connecion to USB device handle %d (serial: %s), port %d\n", dev->handle, dev->udid, device_port);
 
-	cdata->sfd = usbmuxd_connect(dev->handle, device_port);
+		cdata->sfd = usbmuxd_connect(dev->handle, device_port);
+	}
 	free(dev_list);
 	if (cdata->sfd < 0) {
-		fprintf(stderr, "Error connecting to device!\n");
+		fprintf(stderr, "Error connecting to device: %s\n", strerror(errno));
 	} else {
 		cdata->stop_ctos = 0;
 
