Zuerst dachte ich damit ist das gleiche gemeint.
In Force ARP mode, It forces on sending ARP Request whenever data is sent.
In meiner Lib für den W5500 (nicht Arduino), ist das deaktiv. Also werden die Anfragen gecached… dachte ich.
Ich habe eben mal mitgeschnitten:
Wenn Ich vom WizNet die Verbindung aufbaue und das Ziel ist offline, kommt alle 10 Sekunden ein ARP-Request per Broadcast.
Sobald das Ziel online ist, kommt genau eine.
Anschließend nur noch zielgerichtet Requests, diese erfolgen dann ca. alle 30 Sekunden.
Einen W5100, welche diese Option nicht hat, habe ich nicht zum gegenprüfen.
Hatte mich schon vorher auf den W5500 festgelegt, da dieser 8 Sockets bedienen kann 
Ich habe dann mal das BIT ‚Force ARP mode‘ auf 1 gesetzt, leider konnte ich kein anderes Verhalten feststellen 
Da meine Verbindungen aber immer bestehen bleiben und ich keine original Ardunio-Lib nutze, war das jetzt nicht vergleichbar.
Also mal ein Testaufbau und in einem Loop immer eine Verbindung aufbauen und beenden. Und schon hat er jedes mal einen ARP-Request als Broadcast versendet. :mad:
Ich habe mal etwas weiter geforscht. Die Destination MAC wird pro Socket in einem 6 Byte großen Register festgehalten.
Verwende ich immer den gleichen Socket, dann funktioniert auch mein Flag ‚Force ARP mode‘ wie erwartet.
Ein ARP wird nur gesendet wenn sich die Ziel-IP im Register des Socket ändert oder ich ‚Force ARP mode‘ gesetzt habe.
Es gibt also keinen Cache in dem Sinne und auch keine ARP-Tabelle , sondern nur pro Slot die eine Adresse
Wühlt man etwas tiefer im Code der Arduino-Lib, stellt man fest dass die Sockets der Reihe nach neu belegt werden.
Wenn also jetzt in einem Loop immer wieder eine Verbindung vom WizNet zu IPS aufgebaut wird, wird auch immer ein ARP versendet, um das Register dieses Slot zu füllen.
Dies betrifft alle Anwendungen wo in einem loop jedesmal ein tcpclient.connect vorkommt.
Ändern kann man dies nicht… naja schon, aber dann müßte man wohl die halbe Library umbauen und versuchen je nach Ziel-IP den gleichen Slot zu nutzen und somit die schon vorhandene MAC im Register.
Oder direkt die Sockets im Chip ansprechen und nicht die Klassen EthernetClient und EthernetServer nutzen. Ist aber ordentlich Arbeit.
Alternativ bleibt natürlich das umbauen auf einen TCP-Server, hier erfolgt tatsächlich kein ARP-Request wenn sich ein Client auf den Wiznet verbindet, da die MAC des Absendes gleich im Register des Socket landet.
Michael
PS: Auf jeden Fall bin ich froh, dass ich dieses Problem nicht habe. Sonst hätte ich den Chip rausgeworfen 