Nano+Ethernetshield client.remoteIP()

Hallo
Ich habe einen Nano mit eine Ethernetshield ausgestattet, und hab nun folgendes Problem.
Ich habe folgenden Demo-Code auf den Nano gespielt, der läuft und ist im lokalen Netzwerk über die IP-Adresse erreichbar.

#include <UIPEthernet.h>
#include <UIPServer.h>
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 178, 177);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
  
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  Serial.println("Ethernet WebServer Example");

  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);

  // start the server
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
  
}


void loop() {
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
          client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println(" < br / > ");
          client.print("<FORM action=\"http://192.168.178.177/\" >");
          client.print("<P> <INPUT type=\"radio\" name=\"status\" value=\"1\">ON");
          client.print("<P> <INPUT type=\"radio\" name=\"status\" value=\"0\">OFF");
          client.print("<P> <INPUT type=\"submit\" value=\"Submit\"> </FORM>");
          client.println("</html>");
          // output the value of each analog input pin
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(sensorReading);
            client.println("<br />");
          }
          client.print("Client is at ");
          //**client.println(client.remoteIP());**
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disconnected");
  }
}

nun meine Frage: wie kann ich die IP-Adresse des Clients auslesen.
client.println(client.remoteIP());
funktioniert leider nicht, da kommt folgende Fehlermeldung
'class UIPClient' has no member named 'remoteIP'
Ich hoffe Ihr könnt mir weiter helfen.

Suchfunktion des Forum oder der schlechtesten Suchmaschine?

Was gibt das aus?

PS:

Das ist falsch. (Nachtrag: Wenn es an der falschen Stelle steht.)

Na denn:

#include <Ethernet.h>
//#include <UIPServer.h>
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 0, 1);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup()
{
  // Open serial communications and wait for port to open:
  Serial.begin(115200);
  while (!Serial)
  {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  Serial.println("Ethernet WebServer Example");
  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  // start the server
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}


void loop()
{
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client)
  {
    Serial.println("new client @ ");
    Serial.println(client.remoteIP());
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected())
    {
      if (client.available())
      {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank)
        {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
          client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println(" < br / > ");
          client.print("<FORM action=\"http://192.168.178.177/\" >");
          client.print("<P> <INPUT type=\"radio\" name=\"status\" value=\"1\">ON");
          client.print("<P> <INPUT type=\"radio\" name=\"status\" value=\"0\">OFF");
          client.print("<P> <INPUT type=\"submit\" value=\"Submit\"> </FORM>");
          client.println("</html>");
          // output the value of each analog input pin
          for (int analogChannel = 0; analogChannel < 6; analogChannel++)
          {
            int sensorReading = analogRead(analogChannel);
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(sensorReading);
            client.println("<br />");
          }
          client.print("Client is at ");
          client.println(client.remoteIP());
          client.println("</html>");
          break;
        }
        if (c == '\n')
        {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r')
        {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disconnected");
  }
}

Danke für deine schnelle Antwort.
Ich den Code jetzt umgestellt, wie du geschrieben hast, aber leider kommt immer diese Fehlermeldung
'class UIPClient' has no member named 'remoteIP'

Nimm den Code von mir, trage deine IP da ein, wo sie hingehört.
Übertrage den.
Geht? - Die Antwort wird Ja sein.

Hallo my_xy_projekt

Soweit ich das weiss, ist im LAN-shield für den Arduino NANO der ENC28J60 Chip verbau, und der benötigt die "#include <UIPEthernet.h>" . Mit der "#include <Ethernet.h>" läuft keine Komunikation mit LAN und NANO.

LG binderj1

Achja... da war ja was.
Dann tausch die lib mal aus:
https://www.arduino.cc/reference/en/libraries/ethernetenc/

SUPER, es läuft
Danke für deine Hilfe

Dann kannst den als gelöst markieren - hat die Nachwelt noch was von. :wink:

Sorry, meine Unwissenheit, aber wie und wo markiere ich auf gelöst? :fearful:
Ich steh momentan voll auf'm Schlauch. :face_with_monocle:

Wenn Du in Deinem Profil https://forum.arduino.cc/u/binderj1/preferences/interface auf deutsch gestellt hast, gibt es das Kästchen "Lösung" - und wenn in englisch, dann "Solution", was anzuhaken ist.
Und mach das bei #6

Danke für deine Geduld :clap: