public InetSocketAddress start() throws IOException, InterruptedException {
		int port = 0;
	
		chanMgr.start();
		
		InetAddress loopBack = InetAddress.getByName("127.0.0.1");
		InetSocketAddress svrAddr = new InetSocketAddress(loopBack, port);		
		srvrChannel = chanMgr.createTCPServerChannel("TCPServerChannel", factoryHolder);
		srvrChannel.setReuseAddress(true);
		srvrChannel.bind(svrAddr);	
		srvrChannel.registerServerSocketChannel(this);
		
		udp = DatagramChannel.open();
		udp.configureBlocking(true);
		log.info("port="+srvrChannel.getLocalAddress().getPort());
		InetSocketAddress udpAddr = new InetSocketAddress(loopBack, srvrChannel.getLocalAddress().getPort()+1);
		udp.socket().bind(udpAddr);
		
		recThread = new DatagramReceiver(udp, this);
		recThread.start();
		
		return srvrChannel.getLocalAddress();
	}