diff --git a/lib/kamerling/server/udp.rb b/lib/kamerling/server/udp.rb
index <HASH>..<HASH> 100644
--- a/lib/kamerling/server/udp.rb
+++ b/lib/kamerling/server/udp.rb
@@ -2,16 +2,18 @@ module Kamerling class Server::UDP
   def initialize handler: Handler.new, host: '127.0.0.1',
                  logger: Logger.new('/dev/null'), port: req(:port)
     @handler = handler
+    @host    = host
     @logger  = logger
-    @socket  = UDPSocket.new.tap { |server| server.bind host, port }
+    @port    = port
   end
 
   def addr
-    Addr[socket.addr[3], socket.addr[1], :UDP]
+    Addr[host, port, :UDP]
   end
 
   def start
     logger.info "start #{addr}"
+    @socket = UDPSocket.new.tap { |server| server.bind host, port }
     @thread = Thread.new do
       run_select_loop
     end
@@ -23,8 +25,8 @@ module Kamerling class Server::UDP
     socket.close
   end
 
-  attr_reader :handler, :logger, :socket, :thread
-  private     :handler, :logger, :socket, :thread
+  attr_reader :handler, :host, :logger, :port, :socket, :thread
+  private     :handler, :host, :logger, :port, :socket, :thread
 
   private
Server::UDP: move binding to #start