Hola!yo creo que este articulo te puede servir Conexión Ethernet TCP con Arduino - Polaridad.es (soy principiante y aun estoy informandome)
Este es el ejemplo que usan en el articulo que te he pasado
// #include <Ethernet.h> // Librería Ethernet estándar
#define INTERVALO_CONSULTA 60000 // Enviar datos cada minuto
#define INTERVALO_RECONEXION 10000 // Reintentar la conexión 10 segundos más tarde si no ha sido posible hacerlo cuado correspondía
#define CANTIDAD_SENSORES 6 // Número de sensores analógicos empezando en A0
byte direccion_mac[]={0x12,0x34,0x56,0x78,0x9a,0xbc}; // Dirección MAC inventada
IPAddress direccion_ip_fija(192,168,1,69); // Dirección IP elegida para el módulo
IPAddress servidor_dns(87,216,170,85); // Servidor OpenNIC (de Alejandro Bonet, http://opennic.alargador.org)
IPAddress puerta_enlace(192,168,1,14); // Dirección IP del router
IPAddress mascara_red(255,255,255,0); // Máscara de la red
//IPAddress ip_servidor_web(192,168,1,21); // Dirección IP del servidor web (en la intranet)
char url_servidor_web[]="sleepmanager.onironauta.es"; // URL poético para un gestor de sueño (en Internet)
EthernetClient cliente;
byte estado_conexion;
String texto_consulta;
unsigned long cronometro_consulta;
byte contador;
void setup()
{
Serial.begin(9600);
while(!Serial){;} // Esperar al puerto serie de la placa Leonardo
Serial.println("Conectando con el servidor SleepManager...");
Ethernet.begin(direccion_mac,direccion_ip_fija,servidor_dns,puerta_enlace,mascara_red);
cronometro_consulta=millis()+INTERVALO_CONSULTA;
}
void loop()
{
if(millis()>cronometro_consulta)
{
//estado_conexion=cliente.connect(ip_servidor_web,80); // Conexión desde la intranet
estado_conexion=cliente.connect(url_servidor_web,80); // Conexión desde Internet
while(estado_conexion==0) // esperar a que se establezca la conexión o se produzca un error
{
switch(estado_conexion)
{
case 1:
Serial.println("Conexión con el servidor SleepManager establecida correctamente");
break;
case -1:
Serial.println("Ha pasado el tiempo de espera sin que se establezca la conexión");
break;
case -2:
Serial.println("No se ha encontrado el servidor o no responde correctamente");
break;
case -3:
Serial.println("La conexión se ha interrumpido antes de establecerse completamente");
break;
case -4:
Serial.println("La respuesta del servidor es incorrecta");
break;
}
}
if(cliente.connected()) // Si ha sido posible conectar realizar la consulta
{
cronometro_consulta=millis()+INTERVALO_CONSULTA;
texto_consulta="GET /pruebas/guardar_sensores_analogicos.php?origen=SleepManager";
for(contador=0;contador<CANTIDAD_SENSORES;contador++)
{
texto_consulta="&sensor_"+String(contador+1,DEC)+"="+String(analogRead(contador),DEC);
delay(1); // Como tarda 100 μs en obtener el valor analógico, con 1 ms seguro le da tiempo
}
texto_consulta+=" HTTP/1.1\r\nHost: "+String(url_servidor_web)+"\r\nUser-Agent: sleep_inspector\r\n\r\n";
cliente.print(texto_consulta);
cliente.flush();
cliente.stop();
}
else // Si no ha sido posible conectar reintentarlo más tarde pero no tanto como si hubiera sido posible hacerlo
{
cronometro_consulta=millis()+INTERVALO_RECONEXION;
}
}
}
Yo tengo contratada un hosting con este servicio y no he tenido problemas
Espero que lo soluciones y que te valga de ayuda