private synchronized void fireMessageArrived(DatagramPacket packet) {
		ByteBuffer buffer = ByteBuffer.allocate(packet.getLength());
		buffer.put(packet.getData(), 0, packet.getLength()).flip();

		UdpMessageEvent event = new UdpMessageEvent(new InetSocketAddress(
				packet.getAddress(), packet.getPort()), buffer);

		for (UdpMessengerListener listener : listeners) {
			listener.messageArrived(event);
		}
	}