Arduino Ethernet shield waiting 10+ secs before seeing GET request from client

Hi everyone
I am getting very stuck with the ethernet shield

I am writing a swimming pool controller with an Arduino Mega, 7" Netion Touchscreen, Dallas DS18B20 sensors etc

As well as being controllable via the touchscreen, the controller also has a web interface.
The webpage contains a background image (29K ish), and a number of 1 to 3K images for buttons etc

The arduino updates the webpage every second with AJAX, with the data populating tempertaure values and setting the CSS properties of the icons to visible or hidden

It all works BUT takes ages to load
When a client connects, the index.html page loads in a fraction of a second. The background image loads in about 1.5seconds (slow but what I expect for the ethernet shield)
But, whilst all the other icons are small and load quickly once the Arduino receives the GET request, I am seeing delays of 10seconds to 30 seconds after one image loads before the Arduino sees another GET request for the next image

Can anybody see what is going wrong here please?
The Arduino code is on as an attachment as the forum wont let me post it as its over 9000 characters

and here is the code on the webpage (I know it could be better but I am no web developer)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<
       <script type="text/javascript">

// these strings are added onto the end of the ajax request to include button states
returntext=""
var timeoutmethod

function getserverdata()
{
nocache = "&nocache=" + Math.random() * 1000000;
var request = new XMLHttpRequest();
request.onreadystatechange = function()
{
if (this.readyState == 4) {
if (this.status == 200) {
if (this.responseXML != null) {
// extract XML data from XML file (containing switch states and analog value)
document.getElementById("sysdate").innerHTML =
this.responseXML.getElementsByTagName('sysdate')[0].childNodes[0].nodeValue;
document.getElementById("systime").innerHTML =
this.responseXML.getElementsByTagName('systime')[0].childNodes[0].nodeValue;
document.getElementById("airtemp").innerHTML =
this.responseXML.getElementsByTagName('airtemp')[0].childNodes[0].nodeValue;
document.getElementById("pooltemp").innerHTML =
this.responseXML.getElementsByTagName('pooltemp')[0].childNodes[0].nodeValue;
document.getElementById("poolintemp").innerHTML =
this.responseXML.getElementsByTagName('poolintemp')[0].childNodes[0].nodeValue;
document.getElementById("poolouttemp").innerHTML =
this.responseXML.getElementsByTagName('poolouttemp')[0].childNodes[0].nodeValue;
document.getElementById("boilerflow").innerHTML =
this.responseXML.getElementsByTagName('boilerflow')[0].childNodes[0].nodeValue;
document.getElementById("boilerreturn").innerHTML =
this.responseXML.getElementsByTagName('boilerreturn')[0].childNodes[0].nodeValue;
document.getElementById("pumpmeter").value =
this.responseXML.getElementsByTagName('pumpspeed')[0].childNodes[0].nodeValue;

if (this.responseXML.getElementsByTagName('showerspray')[0].childNodes[0].nodeValue=="ON") {
document.getElementById("shower").style.visibility="visible";
} else { 
document.getElementById("shower").style.visibility="hidden";
} 

if (this.responseXML.getElementsByTagName('bubbles')[0].childNodes[0].nodeValue=="ON") {
document.getElementById("jets").style.visibility="visible";
} else {
document.getElementById("jets").style.visibility="hidden";
}

if (this.responseXML.getElementsByTagName('boilerflame')[0].childNodes[0].nodeValue=="ON") {
document.getElementById("flame").style.visibility="visible";
} else {
document.getElementById("flame").style.visibility="hidden";
}
if (this.responseXML.getElementsByTagName('mode')[0].childNodes[0].nodeValue=="OFF") {
document.getElementById("off").style.visibility="visible";
} else {
document.getElementById("off").style.visibility="hidden";
}
if (this.responseXML.getElementsByTagName('mode')[0].childNodes[0].nodeValue=="MAN") {
document.getElementById("manual").style.visibility="visible";
} else {
document.getElementById("manual").style.visibility="hidden";
}
if (this.responseXML.getElementsByTagName('mode')[0].childNodes[0].nodeValue=="AUTO") {
document.getElementById("auto").style.visibility="visible";
} else {
document.getElementById("auto").style.visibility="hidden";
}

}
}
}
}

//this section sends an ajax request every second, with the values of the buttons added to it for deciphering by the server
request.open("GET", "ajax_inputs" + returntext, true);
request.send(null);
timeoutmethod=setTimeout('getserverdata()', 1000);
}

function transmitbuttonpress(text) {
returntext = text;
clearTimeout(timeoutmethod);
getserverdata();
returntext="";
}

    </script>
       
</head>
<body onload="getserverdata()">

    <p class="maindate"><span id="sysdate">--- --/--/----</span></p>
<p class="maintime"><span id="systime">--:--:--</span></p>
      <p class="airtemp"><span id="airtemp">--.-°c</span></p>
<p class="pooltemp"><span id="pooltemp">--.-°c</span></p>
      <p class="poolintemp"><span id="poolintemp">--.-°c</span></p>
       <p class="poolouttemp"><span id="poolouttemp">--.-°c</span></p>
    <p class="boilerflow"><span id="boilerflow">--.-°c</span></p>
    <p class="boilerreturn"><span id="boilerreturn">--.-°c</span></p>
    <meter class="pumpmeter" id="pumpmeter"  min="0" value="1" max="2"></meter>
   
    
   <img class="showerspray" src="spray.jpg" id="shower"/>
   <input class="showerclick" type="button" value="" onclick="transmitbuttonpress('shower')"/>
           
   <img class="spajets" src="bubbles.jpg" id="jets"/>
   <input class="jetsclick" type="button" value="" onclick="transmitbuttonpress('jets')" />
    
  <img class="boilerflame" src="flame.jpg" id="flame"/>
  <input class="boilerclick" type="button" value="" onclick="transmitbuttonpress('boiler')"/>
       
   <img class="offbutton" src="off.jpg" id="off"/>
   <input class="offclick" type="button" value="" onclick="transmitbuttonpress('off')"/>
  
  <img class="manualbutton" src="manual.jpg" id="manual"/>
   <input class="manualclick" type="button" value="" onclick="transmitbuttonpress('manual')"/>
   
   <img class="autobutton" src="auto.jpg" id="auto"/>
   <input class="autoclick" type="button" value="" onclick="transmitbuttonpress('auto')"/>
   
   </body>
</html>

This is what the output looks like - not all the sensor are plugged in at the moment, hence some zero temperatures

">

nextionpoolcontrollerwithethernet12.ino (22.5 KB)

    sensors.reset();
    sensors.select(addr1);                           //select first sensor
    sensors.write(0x44);                             //send 0x44 to start conversion
    sensors.reset();
    sensors.select(addr2);                           //now second sensor
    sensors.write(0x44);

What is the purpose of resetting the bus over and over? Are the sensors capable of simultaneous data collection? (I don't know; I've never used them; I'm asking.)

How much time is being spent reading/updating the touch screen?

How much time is being spent uselessly manipulating Strings? Use strings. They are far faster.

The sensors can be told to start conversion at the same time but have to be read individually. Simultaneous conversion pushes up bus current noticeably though so sequential is preferable i think.

I know what you are saying about strings but the code is not slow. Touch screen update is just a serial write of one or two commands, the firmware and gpu on the toucscreen itself do the rest (simple 2 wire interface plus 5v and 0v).

The code is not delaying things. The XML which is rquested every second by the javascript on the webpage is generated and sent in 18ms on average. The 29k background goes is sent and displayed on the client browser in 1.5 seconds

The problem is that, once the background and first image or two have been sent and displayed, the remaining inages take forever to load.
It is not the arduino being slow sending them, it is taking 30 seconds to see the request
During this period the touchscreen is updating ok so the code is running on, it just seems that either the webpage is delaying before requesting the next image (cant see why it would do that), or it is requesting but the ethernet shield is not seeing it.

Could this be some kind of buffer error?

I am going to make a temporary web page that just loads a sequence of images (no javascript or input fields) and see how that gets on.

I have also ordered a wiznet 5200 based card to see if performance improves from the 5100

Ultimately the webserver is working. Once the page had loaded all works fine
Button presses on the webpage do control the controller and are replicated on the touchscreen. Touchscreen inputs control the controller and are replicated on the webpage, allbeit with a maximum of one second delay due to the AJAX request period.

The sole problem is that the page takes well over 30secs to become useable on loading and should take less than 5.

If you are using a w5100 ethernet shield, you may be running out of sockets. It appears the web page has a lot of files it is requesting. After it requests 4 files, any further requests will stall. The request may time out and the web browser retry in several seconds.

That sounds probably. Do you think connection : keep-alive in the HTML headers for all but the last image solve that?

You would need to implement it on the server side on your Arduino. It may help, but the biggest improvement will be if you can reduce the size and number of your images.

but the biggest improvement will be if you can reduce the size and number of your images.

Or store the images somewhere else, and just link to them.

It is looking like Google Chrome is the problem.
I have incorporated a lot of debugging serial.write statements to see what is going on and display the timings.

Here is the connection log when connecting from Microsoft Edge. The 10seconds ish wait was before I entered the web address in Edge. After that the delay between all image retrievals is low, around 100ms or less for most. The send times i can live with, it was the wait times with Chrome.
From receiving the index.htm page request to delivering the first ajax data burst is around 8seconds with edge

Serial Port Ready.
Initializing SD card...
SUCCESS - SD card initialized.
SUCCESS - index.htm file located on SD card
SUCCESS - alloff.png background pciture located on SD card
SUCCESS - Found all necessary files for web interface.
Ethernet started
Server runnning
server is at 192.168.1.20
Touchscreen running
One wire interface running
Real time clock running
found DS18B20 sensor addresses

Found web client after 10135 ms of waiting
Client connected
GET / HTTP/1.1
 received from clientindex.htm requested
index.htm sent in 520 ms
Client Disconnected

Found web client after 2 ms of waiting
Client connected
GET /spray.jpg HTTP/1.1
 received from clientshower spray image requested
shower spray  image sent in 295 ms
Client Disconnected

Found web client after 116 ms of waiting
Client connected
GET /flame.jpg HTTP/1.1
 received from clientflame image requested
flame image sent in 248 ms
Client Disconnected

Found web client after 192 ms of waiting
Client connected
GET /bubbles.jpg HTTP/1.1
 received from clientspa bubbles image requested
spa bubbles image sent in 474 ms
Client Disconnected

Found web client after 43 ms of waiting
Client connected
GET /alloff.jpg HTTP/1.1
 received from clientbackground image requested
background image sent in 2030 ms
Client Disconnected

Found web client after 115 ms of waiting
Client connected
GET /manual.jpg HTTP/1.1
 received from clientmanaual buttonimage requested
manual button image sent in 423 ms
Client Disconnected

Found web client after 3379 ms of waiting
Client connected
POST /ajax_inputs HTTP/1.1
 received from clientClient Disconnected

Found web client after 897 ms of waiting
Client connected
POST /ajax_inputs HTTP/1.1
 received from clientClient Disconnected

Found web client after 962 ms of waiting
Client connected
POST /ajax_inputs HTTP/1.1
 received from clientClient Disconnected

Compare that with the log for connection from Google Chrome below which takes a total of over 0 seconds and, in fact, failed to load one of the buttons (autobutton.jpg)…

Serial Port Ready.
Initializing SD card...
SUCCESS - SD card initialized.
SUCCESS - index.htm file located on SD card
SUCCESS - alloff.png background pciture located on SD card
SUCCESS - Found all necessary files for web interface.
Ethernet started
Server runnning
server is at 192.168.1.20
Touchscreen running
One wire interface running
Real time clock running
found DS18B20 sensor addresses

Found web client after 26035 ms of waiting
Client connected
GET / HTTP/1.1
 received from clientindex.htm requested
index.htm sent in 520 ms
Client Disconnected

Found web client after 116 ms of waiting
Client connected
GET /spray.jpg HTTP/1.1
 received from clientshower spray image requested
shower spray  image sent in 296 ms
Client Disconnected

Found web client after 44 ms of waiting
Client connected
GET /bubbles.jpg HTTP/1.1
 received from clientspa bubbles image requested
spa bubbles image sent in 474 ms
Client Disconnected

Found web client after 43 ms of waiting
Client connected
GET /alloff.jpg HTTP/1.1
 received from clientbackground image requested
background image sent in 2029 ms
Client Disconnected

Found web client after 116 ms of waiting
Client connected
GET /off.jpg HTTP/1.1
 received from clientoff button image requested
off button image sent in 348 ms
Client Disconnected

Found web client after 45 ms of waiting
Client connected
GET /flame.jpg HTTP/1.1
 received from clientflame image requested
flame image sent in 248 ms
Client Disconnected

Found web client after 4198 ms of waiting
Client connected
GET /manual.jpg HTTP/1.1
 received from clientmanaual buttonimage requested
manual button image sent in 423 ms
Client Disconnected

Found web client after 11511 ms of waiting
Client connected
POST /ajax_inputs HTTP/1.1
 received from clientClient Disconnected

Found web client after 960 ms of waiting
Client connected
POST /ajax_inputs HTTP/1.1
 received from clientClient Disconnected

Does anyone have any ideas why Chrome performs so badly?
Internet Explorer and Firefox both perform similarly to Edge (other than IE doesn’t handle the tag for the pump speed but I can work around that, but Chrome is dire

Read reply #3. It may be the way Chrome handles an inability to connect. It may wait a few seconds before reattempting the connection. IE and Firefox may reattempt immediately.

How many requests does the initial page make? If more than 4, you are probably running out of sockets and the web browser may be reattempting to make the connection after a delay.

edit: Do you understand what I am saying? If the web page the Arduino sends to the client has more than 4 files to request from the Arduino (like images and the Ajax request), only 4 may connect immediately. That is all the sockets you have, unless you have a W5200/W5500. The rest of the requested docs will not connect. How the web browser handles this inability to connect is probably different.

The best way to eliminate this delay (as PaulS implied in reply #6) is to host the images on another server. That way the Arduino only handles the main page upload, the favicon.ico upload, and the Ajax requests.

Hi, thanks for that. I do get what you mean. I have a W5200 shield but cant get it to work (subject of my other thread). I was hoping that would be the cure to my problems but in fact it is the source of many more. One thing that does look like it could sort out the sockets issue is CSS sprites. I could bundle all my images into a single sprite (only one socket used) and then chop that up with CSS on the webpage to produce the images.

I know i could host the images elsewhere but that means that it would only work on my home network if the internet connection is up (if web hosted storage) or would need a locsl server of some sort.

Did you try my ShowSockStatus function? Does it show all 8 sockets?

I use it like this. When I want to check the sockets. I enter 'r' on the serial monitor.

void loop() {
  if(Serial.available()) {
    char ch = Serial.read();
    if(ch == 'r') ShowSockStatus();

  // rest of loop

Hi Tim I have now incorporated your sockets checking into the code. Looking at the new server code from you on the playground, maybe I should upgrade my server routine to that one?

Anyway, with no client connected I get.... Socket#0:0x14 125 D:0.0.0.0(0) Socket#1:0x0 0 D:0.0.0.0(0) Socket#2:0x0 0 D:0.0.0.0(0) Socket#3:0x0 0 D:0.0.0.0(0)

Then, using Microsoft Edge as the client, I get this as each request is made (put into a code window so it is scrollable and doesn't fill the page

ound web client after 10268 ms of waiting
Socket#0:0x17 125 D:192.168.1.109(25538)
Socket#1:0x14 125 D:0.0.0.0(0)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET / HTTP/1.1

Found web client after 132 ms of waiting
Socket#0:0x14 125 D:192.168.1.109(25538)
Socket#1:0x17 125 D:192.168.1.109(25544)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET /bubbles.jpg HTTP/1.1


Found web client after 105 ms of waiting
Socket#0:0x17 125 D:192.168.1.109(25553)
Socket#1:0x14 125 D:192.168.1.109(25544)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET /auto.jpg HTTP/1.1

Found web client after 22 ms of waiting
Socket#0:0x14 125 D:192.168.1.109(25553)
Socket#1:0x17 125 D:192.168.1.109(25545)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET /alloff.jpg HTTP/1.1


Found web client after 130 ms of waiting
Socket#0:0x17 125 D:192.168.1.109(25539)
Socket#1:0x14 125 D:192.168.1.109(25545)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET /spray.jpg HTTP/1.1


Found web client after 2367 ms of waiting
Socket#0:0x14 125 D:192.168.1.109(25539)
Socket#1:0x17 125 D:192.168.1.109(25594)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
POST /ajax_inputs HTTP/1.1

So that looks like it is only using two sockets? Pretty quick but oddly it didn't request three of the images: flame.jpg, off.jpg or manual.jpg

Now, using Google Chrome...

Found web client after 12320 ms of waiting
Socket#0:0x17 125 D:192.168.1.109(25056)
Socket#1:0x17 125 D:192.168.1.109(25057)
Socket#2:0x14 125 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET / HTTP/1.1


Found web client after 132 ms of waiting
Socket#0:0x0 125 D:192.168.1.109(25056)
Socket#1:0x17 125 D:192.168.1.109(25057)
Socket#2:0x14 125 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET /spray.jpg HTTP/1.1


Found web client after 105 ms of waiting
Socket#0:0x14 125 D:192.168.1.109(25056)
Socket#1:0x0 125 D:192.168.1.109(25057)
Socket#2:0x17 125 D:192.168.1.109(25062)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET /bubbles.jpg HTTP/1.1


Found web client after 129 ms of waiting
Socket#0:0x17 125 D:192.168.1.109(25065)
Socket#1:0x14 125 D:192.168.1.109(25057)
Socket#2:0x0 125 D:192.168.1.109(25062)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET /alloff.jpg HTTP/1.1

Found web client after 132 ms of waiting
Socket#0:0x14 125 D:192.168.1.109(25065)
Socket#1:0x17 125 D:192.168.1.109(25058)
Socket#2:0x0 125 D:192.168.1.109(25062)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET /flame.jpg HTTP/1.1

Found web client after 3159 ms of waiting
Socket#0:0x17 125 D:192.168.1.109(25060)
Socket#1:0x17 125 D:192.168.1.109(25061)
Socket#2:0x14 125 D:192.168.1.109(25062)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET /off.jpg HTTP/1.1

Found web client after 91 ms of waiting
Socket#0:0x0 125 D:192.168.1.109(25060)
Socket#1:0x17 125 D:192.168.1.109(25061)
Socket#2:0x14 125 D:192.168.1.109(25062)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET /manual.jpg HTTP/1.1

Found web client after 676 ms of waiting
Socket#0:0x14 125 D:192.168.1.109(25060)
Socket#1:0x0 125 D:192.168.1.109(25061)
Socket#2:0x17 125 D:192.168.1.109(25064)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET /auto.jpg HTTP/1.1

Found web client after 91 ms of waiting
Socket#0:0x17 125 D:192.168.1.109(25066)
Socket#1:0x14 125 D:192.168.1.109(25061)
Socket#2:0x0 125 D:192.168.1.109(25064)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
POST /ajax_inputs HTTP/1.1

This only uses a maximum of three sockets.

Interestingly, since adding the sockets checking, the site now loads far faster in Google Chrome. The only significant delay above was between the requests for flame.jpg and off.jpg

The result using my mobile (Samsung Galaxy S5) connected to the local wifi network are even stranger....

Found web client after 4663 ms of waiting
Socket#0:0x17 125 D:192.168.1.108(54091)
Socket#1:0x14 125 D:0.0.0.0(0)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET / HTTP/1.1

Found web client after 135 ms of waiting
Socket#0:0x14 125 D:192.168.1.108(54091)
Socket#1:0x17 125 D:192.168.1.108(54092)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET /bubbles.jpg HTTP/1.1

Found web client after 65 ms of waiting
Socket#0:0x17 125 D:192.168.1.108(54097)
Socket#1:0x14 125 D:192.168.1.108(54092)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET /alloff.jpg HTTP/1.1

Found web client after 135 ms of waiting
Socket#0:0x14 125 D:192.168.1.108(54097)
Socket#1:0x17 125 D:192.168.1.108(54096)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET /spray.jpg HTTP/1.1

Found web client after 1207 ms of waiting
Socket#0:0x17 125 D:192.168.1.108(54093)
Socket#1:0x14 125 D:192.168.1.108(54096)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET /flame.jpg HTTP/1.1

Found web client after 7567 ms of waiting
Socket#0:0x14 125 D:192.168.1.108(54093)
Socket#1:0x17 125 D:192.168.1.108(54094)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET /off.jpg HTTP/1.1

Found web client after 15522 ms of waiting
Socket#0:0x17 125 D:192.168.1.108(54095)
Socket#1:0x14 125 D:192.168.1.108(54094)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
GET /auto.jpg HTTP/1.1

Found web client after 135 ms of waiting
Socket#0:0x14 125 D:192.168.1.108(54095)
Socket#1:0x17 125 D:192.168.1.108(54098)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Client connected
POST /ajax_inputs HTTP/1.1

It starts off fine but then drops to a snails pace with 22seconds of wait times for the last two images. Those are both less than 5KB files and, when the server does receive the GET requests for them, it send them in around 300ms Again it is only using two sockets

If you are using the correct library for the W5200, that should show 8 sockets, not 4. I think that is your problem. This is the correct define for the W5200. This would cause my ShowSockStatus function to show 8 sockets.

#define MAX_SOCK_NUM 8

The library I am using now is this one. https://github.com/Wiznet/WIZ_Ethernet_Library Insure you change the define in the w5100.h file to the W5200.

//#define W5100_ETHERNET_SHIELD // Arduino Ethenret Shield and Compatibles ...
//#define W5200_ETHERNET_SHIELD // WIZ820io, W5200 Ethernet Shield 
#define W5500_ETHERNET_SHIELD   // WIZ550io, ioShield series of WIZnet

You want this

//#define W5100_ETHERNET_SHIELD // Arduino Ethenret Shield and Compatibles ...
#define W5200_ETHERNET_SHIELD // WIZ820io, W5200 Ethernet Shield 
//#define W5500_ETHERNET_SHIELD   // WIZ550io, ioShield series of WIZnet

edit: You should see this: Socket#0:0x17 125 D:192.168.1.108(54091) Socket#1:0x14 125 D:0.0.0.0(0) Socket#2:0x0 0 D:0.0.0.0(0) Socket#3:0x0 0 D:0.0.0.0(0) Socket#4:0x0 0 D:0.0.0.0(0) Socket#5:0x0 0 D:0.0.0.0(0) Socket#6:0x0 0 D:0.0.0.0(0) Socket#7:0x0 0 D:0.0.0.0(0)

I'm not using my W5200 because I cant get the thing to work. Even tried resoldering the header pins but still doesn't work Hence I am back to using the W5100 (which explains the four sockets) I am using the library you mention but with the include set to the W5100 as below...

#define W5100_ETHERNET_SHIELD // Arduino Ethenret Shield and Compatibles ...
//#define W5200_ETHERNET_SHIELD // WIZ820io, W5200 Ethernet Shield 
//#define W5500_ETHERNET_SHIELD   // WIZ550io, ioShield series of WIZnet

That is what I am using, but it won't solve your problem with Chrome. My guess is you need 8 sockets to get it up to speed.

edit: I noticed during my testing of the ethernet shield that some web browsers will display the files as each file download is complete, and others wait until all files are downloaded before displaying the page.

I really wanted the 5200 to work as, if nothing else, it should send a lot faster than the 5100 I have had a closer look at the shield and there seem to be traces connected to 5v, 0v, reset, pin 3, pin 4, pin 8, pin 9 and pin 10, pin 13 and the six in the ISCP header.

4 and 10 will be the W5200 and microSD card, 5v, 0v and reset are obvious but not sure what the rest are going to be or what I need to do with them (if anything).

I could buy a new W5200 shield and try that but dont want to waste £20 if its not the shield

Have you looked at the schematic of the shield? Can you post a link to the shield?

I am at work for a couple of days now so trying to post from but did post a link to the shield i bought (from ebay) on my other thread (the one about the W5200 not working).
Thanks for all the help so far, i really appreciate it

The W5200 runs :) I found this thread http://forum.arduino.cc/index.php?topic=316764.0 and your (Surfer Tim's) post #14 hit the nail on the head. Those extra traces on the shield were the pwrdn (pin9) and reset (pin8) pins

With pwrdn pulled low and reset high, the W5200 runs. I can only get it working using the EthernetV2_0.h library at the moment but at least it is running so the shield is not dead It shows 8 sockets too

The bad news is that the web page does not load any quicker in Chrome and is actually no better in Edge or IE than with the W5100 but now I know the shield works I can do some more digging