diff --git a/collector/socket/src/main/cfg/org.apache.karaf.decanter.collector.socket.cfg b/collector/socket/src/main/cfg/org.apache.karaf.decanter.collector.socket.cfg
index fdc3f12..81b5597 100644
--- a/collector/socket/src/main/cfg/org.apache.karaf.decanter.collector.socket.cfg
+++ b/collector/socket/src/main/cfg/org.apache.karaf.decanter.collector.socket.cfg
@@ -22,6 +22,9 @@
 # Port number on which to listen
 #port=34343
 
+# Binding address on which to listen
+#host=0.0.0.0
+
 # Number of worker threads to deal with
 #workers=10
 
diff --git a/collector/socket/src/main/java/org/apache/karaf/decanter/collector/socket/SocketCollector.java b/collector/socket/src/main/java/org/apache/karaf/decanter/collector/socket/SocketCollector.java
index 163d49e..996dfa5 100644
--- a/collector/socket/src/main/java/org/apache/karaf/decanter/collector/socket/SocketCollector.java
+++ b/collector/socket/src/main/java/org/apache/karaf/decanter/collector/socket/SocketCollector.java
@@ -17,10 +17,7 @@
 package org.apache.karaf.decanter.collector.socket;
 
 import java.io.*;
-import java.net.DatagramPacket;
-import java.net.DatagramSocket;
-import java.net.ServerSocket;
-import java.net.Socket;
+import java.net.*;
 import java.util.Dictionary;
 import java.util.HashMap;
 import java.util.Map;
@@ -79,6 +76,7 @@
     public void activate(Dictionary<String, Object> properties) throws IOException {
         this.properties = properties;
         int port = Integer.parseInt(getProperty(this.properties, "port", "34343"));
+        String host = getProperty(this.properties, "host", "0.0.0.0");
         int workers = Integer.parseInt(getProperty(this.properties, "workers", "10"));
 
         this.protocol = Protocol.valueOf(getProperty(this.properties, "protocol", "tcp").toUpperCase());
@@ -91,10 +89,10 @@
 
         switch (protocol) {
             case TCP:
-                this.serverSocket = new ServerSocket(port);
+                this.serverSocket = new ServerSocket(port, 50, InetAddress.getByName(host));
                 break;
             case UDP:
-                this.datagramSocket = new DatagramSocket(port);
+                this.datagramSocket = new DatagramSocket(port, InetAddress.getByName(host));
                 break;
         }
 
diff --git a/manual/src/main/asciidoc/user-guide/collectors.adoc b/manual/src/main/asciidoc/user-guide/collectors.adoc
index 02a60f0..10d9831 100644
--- a/manual/src/main/asciidoc/user-guide/collectors.adoc
+++ b/manual/src/main/asciidoc/user-guide/collectors.adoc
@@ -669,6 +669,9 @@
 # Port number on which to listen
 #port=34343
 
+# Binding address on which to listen
+#host=0.0.0.0
+
 # Number of worker threads to deal with
 #workers=10
 
@@ -681,6 +684,7 @@
 ----
 
 * the `port` property contains the port number where the network socket collector is listening
+* the `host` property contains the host name/interface address where the network socket collector is listening
 * the `workers` property contains the number of worker threads the socket collector is using for the connection
 * the `protocol` property contains the protocol used by the collector for transferring data with the client
 * the `unmarshaller.target` property contains the unmarshaller used by the collector to transform the data
