Why is this code in loop?
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,1,3};
Server server(80);
During every execution of loop, you want to create a new server?
You would be doing yourself, and us, a huge favor if you were to learn to create functions.
Each case in loop should call a separate function.
Some indentation would be useful, too.
for (;;){
key = lcd.keypad();
if(key == -1){break;}
}
Magic numbers with no comments are to be avoided. What does the -1 from lcd.keypad() mean?
More code that does not belong in loop:
//******************************Web Server******************************
{
Ethernet.begin(mac, ip);
server.begin();
Client client = server.available();
if (client) {
You are restarting the server on every pass through loop. It's no wonder an external system can not connect to it.