Ethernet shield problems! Time to update library?

I'm not sure what to suggest for why the connection sometimes fails. It may be because when you reset the board, the connection is started from the same source port again. You could try editing Client::connect() to use a random _srcport.

I have watched the connection by tshark, it does connect from a different port at each reset. When using the local echo example the connection looks like this;

  3  17.126960  192.168.0.2 -> 192.168.0.3  ICMP Echo (ping) request
  4  17.127116  192.168.0.3 -> 192.168.0.2  ICMP Echo (ping) reply
 11  34.911229  192.168.0.2 -> 192.168.0.3  TCP 36588 > telnet [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=230615 TSER=0 WS=6
 12  34.911382  192.168.0.3 -> 192.168.0.2  TCP telnet > 36588 [RST] Seq=1 Win=0 Len=0

It does respond to PING requests, but it does not respond to any telnet requests.

When using the client example, the tshark output looks like this;

72 520.957368 de:ad:be:ef:fe:ed -> Broadcast    ARP Who has 192.168.0.2?  Tell 192.168.0.3
 73 520.957410 SamsungE_b0:47:e1 -> de:ad:be:ef:fe:ed ARP 192.168.0.2 is at 00:13:77:b0:47:e1
 74 520.957554  192.168.0.3 -> 192.168.0.2  TCP [TCP Port numbers reused] blackjack > http [SYN] Seq=0 Win=2048 Len=0 MSS=1460
 75 520.957605  192.168.0.2 -> 192.168.0.3  TCP http > blackjack [SYN, ACK] Seq=0 Ack=1 Win=5840 Len=0 MSS=1460
 76 520.957755  192.168.0.3 -> 192.168.0.2  TCP blackjack > http [ACK] Seq=1 Ack=1 Win=2048 Len=0
 77 520.995661  192.168.0.3 -> 192.168.0.2  TCP blackjack > http [FIN, ACK] Seq=1 Ack=1 Win=2048 Len=0
 78 520.995811  192.168.0.2 -> 192.168.0.3  TCP http > blackjack [FIN, ACK] Seq=1 Ack=2 Win=5840 Len=0
 79 520.995959  192.168.0.3 -> 192.168.0.2  TCP blackjack > http [ACK] Seq=2 Ack=2 Win=2048 Len=0

But when I check the Apache web server logs, there is nothing in there.