¿Como conectar a 2 esp8266 y mandar datos entres ellos sin depender de mi Wifi?

Que tal, estoy tratando de encontrar información sobre esto pero no doy.
Lo que quisiera realizar es que un esp8266 este de modo Access Point y este emita una pagina web cuando te conectas a el por SSID y PASSWORD generada por el mismo.

El segundo esp8266 requiero que lea la pagina web generada por el primer esp8266.

Es posible? de que requeriria?

Lo unico es que no quiero usar el wifi del router de mi casa.

Digamos que estoy queriendo programar un simple repetidor de la pagina web generada por el primer esp8266.

Aprovechando les comento que encontre un blog en que describe como utilizar el esp8266 como repetidor wifi usando a arduino IDE he explorado esta opcion pero el router que tengo no permite la configuración que se describe en la página es por eso que recurro a esta opción. Aunque si a alguien en otro país y con otro tipo de compañia le funciona, estaría interesado en saber como fue que configuro su router para tal fin. enlace: lifesim.biz

Si es posible pero no creando una pagina web sino intercambiando datos directamente via UDP o TCP/IP.
Uno es el AP y el otro u otros son los clientes colgados de éste.
Si usas al ESP8266 como Arduino, hay ejemplos que te dice como hacerlo.

Esto es lo que buscas
Arduino core for ESP8266 WiFi chip
Tienes todo tipo de soluciones incluida la que pides pero tambien la opción MESH que te permite extender los rangos de los ESP ya que un ESP8266 mas alejado puede actuar de puente de otro.
Supongamos que el alcance es de 30 mts y quieres llegar a 80 mts. Pues pones uno a mitad de camino y éste hará de puente/bridge del otro.
Aprende a trabajar de este modo y verás lo fácil que se vuelve todo.

Buenas, soy Nuevo en el foro, creo que es la segunda vez que someto una pregunta. surbyte si me pudieras ayudar te lo agradecere. Realice este codigo leyendo varios documentos y utilizando codigos existentes, modificandolos a mi necesidad. Este proyecto es controlado por una aplicacion movil creada en MIT App Inventor 2 y funciona bien, ahora yo necesito que este esp8266 esp-12 reciba esta instruccion " if (req.indexOf("/gpio/ON/") != -1)" y se la reenvie a otro esp8266 para que ambos esp8266 ejecuten lo mismo y a la misma vez. E leido y buscado en todo lugar y no termino encontrando como hacerlo. Bien e tratado utilizando el esp principal como access point, webserver y demas. Siempre obtengo errors, tanto de funciones que dicen no estar definidas o que le falta in token. Verifico que las librerias esten bien y todo aparenta estar bien.

#include <ESP8266WiFi.h>
#include <Stepper.h>

IPAddress ip(192, 168, 1, 12);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);

const char* ssid = "ARRIS-E3C2";
const char* password = "288A1DBA3947E540";

int dirpin = 12; // Direction Pin
int steppin = 13; // Stepping Pin

// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);

void setup() {
Serial.begin(115200);

pinMode(dirpin, OUTPUT);
pinMode(steppin, OUTPUT);
digitalWrite(12, 13);

// Connect to Wi-Fi
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

{
WiFi.config(ip, gateway, subnet);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Wi-Fi connected");

// Start the server
server.begin();
Serial.println("Server started");

// Print the IP address
Serial.println(WiFi.localIP());
}
}
void loop() {

// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}

// Wait until the client sends some data
Serial.println("new client");
while (!client.available()) {
delay(1);
}

// Read the first line of the request
String req = client.readStringUntil('\r');
Serial.println(req);
{

// Match the request

if (req.indexOf("/gpio/ON/") != -1) {
int i;
digitalWrite(dirpin, HIGH);
delay(1000);
for (i = 0; i < 5720; i++)
{
digitalWrite(steppin, LOW);
delayMicroseconds(100);
digitalWrite(steppin, HIGH);
delayMicroseconds(100);
}
digitalWrite(dirpin, LOW);
delay(2000);
for (i = 0; i < 5720; i++)
{
digitalWrite(steppin, LOW);
delayMicroseconds(100);
digitalWrite(steppin, HIGH);
delayMicroseconds(100);
}
}
}
}

Ahora este es el codigo que llevo semanas tratando de hacerlo trabajar y nada:

Codigo AP,

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <WiFiClient.h>
#include <Stepper.h>

IPAddress ip(192, 168, 1, 12);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);

const char* ssid = "ARRIS-E3C2";
const char* password = "288A1DBA3947E540";

int dirpin = 12; // Direction Pin
int steppin = 13; // Stepping Pin

// Create an instance of the server
// specify the port to listen on as an argument
ESP8266WebServer server(80);

void handleRoot() {
server.send(200, "/gpio/ON/");
}

void setup(void) {
Serial.begin(115200);

pinMode(dirpin, OUTPUT);
pinMode(steppin, OUTPUT);
digitalWrite(12, 13);

// Connect to Wi-Fi
Serial.print(".");
WiFi.mode(WIFI_AP);
WiFi.softAP(ssid, password);
IPAddress myIP = WiFi.softAPIP();
Serial.print("HotSpt IP: ");
Serial.println(myIP);

server.on("/", handleRoot);

server.begin();
Serial.println("HTTP server started");

{
WiFi.config(ip, gateway, subnet);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);

}
// Print the IP address
Serial.println(WiFi.localIP());
}
}
void loop(void) {
server.handleClient();

// Check if a client has connected
if (!Client) {
return;
}

// Wait until the client sends some data
Serial.println("new client");
while (!Client.available()) {
delay(1);
}

// Read the first line of the request
String req = Client.readStringUntil('\r');
Serial.println(req);
{

// Match the request

if (req.indexOf("/gpio/ON/") != -1) {
int i;
digitalWrite(dirpin, HIGH);
delay(1000);
for (i = 0; i < 5720; i++)
{
digitalWrite(steppin, LOW);
delayMicroseconds(100);
digitalWrite(steppin, HIGH);
delayMicroseconds(100);
}
digitalWrite(dirpin, LOW);
delay(2000);
for (i = 0; i < 5720; i++)
{
digitalWrite(steppin, LOW);
delayMicroseconds(100);
digitalWrite(steppin, HIGH);
delayMicroseconds(100);

digitalWrite(dirpin, HIGH);
delay(1000);
for (i = 0; i < 5720; i++)
{
digitalWrite(steppin, LOW);
delayMicroseconds(100);
digitalWrite(steppin, HIGH);
delayMicroseconds(100);
}
digitalWrite(dirpin, LOW);
delay(2000);
for (i = 0; i < 5720; i++)
{
digitalWrite(steppin, LOW);
delayMicroseconds(100);
digitalWrite(steppin, HIGH);
delayMicroseconds(100);

digitalWrite(dirpin, HIGH);
delay(1000);
for (i = 0; i < 5720; i++)
{
digitalWrite(steppin, LOW);
delayMicroseconds(100);
digitalWrite(steppin, HIGH);
delayMicroseconds(100);
}
digitalWrite(dirpin, LOW);
delay(2000);
for (i = 0; i < 5720; i++)
{
digitalWrite(steppin, LOW);
delayMicroseconds(100);
digitalWrite(steppin, HIGH);
delayMicroseconds(100);

digitalWrite(dirpin, HIGH);
delay(1000);
for (i = 0; i < 5720; i++)
{
digitalWrite(steppin, LOW);
delayMicroseconds(100);
digitalWrite(steppin, HIGH);
delayMicroseconds(100);
}
digitalWrite(dirpin, LOW);
delay(2000);
for (i = 0; i < 5720; i++)
{
digitalWrite(steppin, LOW);
delayMicroseconds(100);
digitalWrite(steppin, HIGH);
delayMicroseconds(100);
}

}
}
}
}
}
}

Y codigo Client,

#include <ESP8266WiFi.h>
#include <Stepper.h>

const char* ssid = "ARRIS-E3C2";

int dirpin = 12; // Direction Pin
int steppin = 13; // Stepping Pin

IPAddress host(192, 168, 1, 12);

void setup() {
Serial.begin(115200);
delay(10);

pinMode(dirpin, OUTPUT);
pinMode(steppin, OUTPUT);
digitalWrite(12, 13);

Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}

Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}

int value = 0;

void loop() {
delay(5000);
++value;

Serial.print("connecting to ");
Serial.println(host);

// Use WiFiClient class to create TCP connections
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}

client.print(String("HTTP/1.1\r\n") +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
delay(10);

// Read all the lines of the reply from server and print them to Serial
while(client.available()){
String line = client.readStringUntil('\r');
Serial.print(line);
}

Serial.println();
Serial.println("closing connection");
}

Cualquier ayuda se le agradecera.