enviar comandos por ethernet shield

hola, me gustaría saber si hay alguna forma de enviar comandos a otro arduino a través de un ethernet shield, me explico estoy controlando un dispositivo a través de una pagina web y todo funciona bien pero me gustaría ocupar un control ps2 conectado a un arduino que a su vez esta conectado a un ethernet shield para poder controlar el dispositivo (como encender un led con el botón x de ps2) e buscado y no he encontrado la forma de hacerlo. se como funciona la libreria de ps2 en eso no hay drama solo que no e podido enviar la ip (al se conectara) el puerto (80) y la accion (LED=0).

de antemano muchas gracias

mira los ejemplos UDPSendRecv.ino si mal recuerdo que servirá a tus necesidades

muchas gracias por tu respuesta, estoy intentando ver si puedo hacer algo con ese código aun que no lo logro por entender 100%

El código no es fácil al igual que lo que planteas que no es fácil de realizar.
Para entenderlo comienza entendiendo/buscando que es UDP, que elementos requiere y luego mira los ejemplos.

Acá lo necesario UDPSendReceiveString.ino y luego puedes profundizar mas con google.

Mira, este es el código que tengo en el receptor, el cual me funciona sin problemas desde una pagina web. (pido disculpas por lo anterior)

#define ESP8266 Serial3
#include <AFMotor.h>
#include <Servo.h>
Servo servo1, servo2 ;

AF_DCMotor motorA(1);
AF_DCMotor motorB(2);

int LED = 13;

boolean FAIL_8266 = false;

#define BUFFER_SIZE 256
char buffer[BUFFER_SIZE];

void setup() {
  Serial3.begin(9600);
  pinMode(LED, OUTPUT);
  motorA.setSpeed(255);
  motorB.setSpeed(255);
  servo1.attach(9);       // El servo 1 se controla con el pin 9
  servo2.attach(10);
  servo2.write(90);
  servo1.write(90);
  pinMode(41, OUTPUT);
  pinMode(39, OUTPUT);
  
  do{
    Serial3.begin(9600);
    Serial.begin(9600);
    ESP8266.begin(9600);
  
    //Wait Serial Monitor to start
    while(!Serial);
    Serial.println("--- Start ---");

    //ESP8266.println("AT+RST");
    //delay(1000);
    if(ESP8266.find("ready"))
    {
       Serial.println("Module is ready");
       digitalWrite(39, HIGH);
      ESP8266.println("AT+CWMODE=3");
      delay(1000);
      clearESP8266SerialBuffer();
      sendESP8266Cmdln("AT+CWLAP", 10000);
      sendESP8266Cmdln("AT+CWJAP=\"PEDREROS\",\"casapedreros\"", 10000); 
     // sendESP8266Cmdln("AT+CIFSR", 5000);    
      sendESP8266Cmdln("AT+CIPSTATUS", 7000); 
      sendESP8266Cmdln("AT+CIFSR", 5000);  
      sendESP8266Cmdln("AT+CIPMUX=1", 1000);
      sendESP8266Cmdln("AT+CIPSERVER=1,80",1000);
        
      Serial.println("config terminada");
        
      FAIL_8266 = false;
    }else{            
      digitalWrite(39, HIGH);
        delay (50);
        digitalWrite(39, LOW);
        delay (50);
      Serial.println("Module have no response.");
      delay(500);
      FAIL_8266 = true;
    }
  }while(FAIL_8266);
  
  digitalWrite(41, HIGH);
  ESP8266.setTimeout(1000);

}

void loop(){

  if(ESP8266.available()) // check if the esp is sending a message 
  {
    Serial.println("Something received");
    delay(1000);
    if(ESP8266.find("+IPD,"))
    {
      String action;
      
      Serial.println("+IPD, found");
      int connectionId = ESP8266.read()-48;
      Serial.println("connectionId: " + String(connectionId));
      
      ESP8266.find("led=");
      char s = ESP8266.read();
      if(s=='0'){
        action = "led=0";//up
        motorA.run(FORWARD);
        motorB.run(FORWARD);
        digitalWrite(LED, LOW);
      }else if(s=='1'){
        action = "led=1";//DOWN
        motorA.run(BACKWARD);
        motorB.run(BACKWARD);        
        digitalWrite(LED, HIGH);
       }else if(s=='2'){ 
        action = "led=2";//LEFT
        motorA.run(BACKWARD);
        motorB.run(FORWARD);
       }else if(s=='3'){ 
        action = "led=3";//RIGHT
        motorA.run(FORWARD);
        motorB.run(BACKWARD);
       }else if(s=='4'){ 
        action = "led=4";//servo_down
        servo1.write(180);                // Gira el servo a 1800 grados  
       }else if(s=='5'){ 
        action = "led=5";//servo_up
        servo1.write(0);                // Gira el servo a 1800 grados  
        
       }else if(s=='6'){ 
        action = "led=6";//servo_izq
        servo2.write(150);                // Gira el servo a 1800 grados  
        
       }else if(s=='7'){ 
        action = "led=7";//servo_der
        servo2.write(3);                // Gira el servo a 1800 grados  
        
       }else if(s=='8'){ 
        action = "led=8";//servo_der
        servo2.write(90);                // Gira el servo a 1800 grados  
         
        }else if(s=='c'){ 
        action = "led=c";//servo_der
        servo2.write(90);
        servo1.write(90);               // Gira el servo a 1800 grados  
            
       
       
      }else{
        action = "led=S";
        motorA.run(RELEASE);
        motorB.run(RELEASE);;
      }
      
      Serial.println(action);
      sendHTTPResponse(connectionId, action);
      
      //Close TCP/UDP
      //String cmdCIPCLOSE = "AT+CIPCLOSE="; 
      //cmdCIPCLOSE += connectionId;
      //sendESP8266Cmdln(cmdCIPCLOSE, 1000);
    }
  }
  
}

void sendHTTPResponse(int id, String content)
{
  String response;
  response = "HTTP/1.1 200 OK\r\n";
  response += "Content-Type: text/html; charset=UTF-8\r\n"; 
  response += "Content-Length: ";
  response += content.length();
  response += "\r\n";
  response +="Connection: close\r\n\r\n";
  response += content;

  String cmd = "AT+CIPSEND=";
  cmd += id;
  cmd += ",";
  cmd += response.length();
  
  Serial.println("--- AT+CIPSEND ---");
  sendESP8266Cmdln(cmd, 1000);
  
  Serial.println("--- data ---");
  sendESP8266Data(response, 1000);
}

boolean waitOKfromESP8266(int timeout)
{
  do{
    Serial.println("wait OK...");
    delay(1000);
    if(ESP8266.find("OK"))
    {
      return true;
    }

  }while((timeout--)>0);
  return false;
}

//Send command to ESP8266, assume OK, no error check
//wait some time and display respond
void sendESP8266Cmdln(String cmd, int waitTime)
{
  ESP8266.println(cmd);
  delay(waitTime);
  clearESP8266SerialBuffer();
}

//Basically same as sendESP8266Cmdln()
//But call ESP8266.print() instead of call ESP8266.println()
void sendESP8266Data(String data, int waitTime)
{
  ESP8266.print(data);
  delay(waitTime);
  clearESP8266SerialBuffer();
}

//Clear and display Serial Buffer for ESP8266
void clearESP8266SerialBuffer()
{
  Serial.println("= clearESP8266SerialBuffer() =");
  while (ESP8266.available() > 0) {
    char a = ESP8266.read();
    Serial.write(a);
  }
  Serial.println();
}

No viste el modo en que yo puse el código usando tags ?
Por favor lee las normas del foro y luego edita lo que has pegado.
Me quita la ganas de ayudar, realmente.

Suerte!

Ya lo modifique y pido mis mas sinceras disculpas.

Bueno, te agradezco mucho.
Sería bueno que decidas con que medio te manejas porque pense que hablabas de un UNO con una ethernet y ahora saltas con un ESP8266.

Si solo quieres comunicar dos dispositivos y no importa como, también es importante asi nos centramos en eso.

Bueno la idea principal es poder comunicar un arduino uno con modulo ethernet shield y un arduino mega con esp8266.

necesito que el ethernet shield le comunique al modulo esp8266 tal como lo hago en una pagina web.

De antemano muchas gracias.