4

Arduino 默认以太网库类包含一个IPAddress变量类型。这是IPAddress为了什么?为什么要使用它,为什么官方示例中的网关和子网 IP 不使用它?

4

1 回答 1

3

就像你说的,它只是一种可以存储IP地址的变量(例如int(整数))。使用整数,您不能.在 IP 地址中添加所需的 s。此外,该库只接受整数,因为对于字符串,事情“可能会变得混乱”。例如,如果您有1一个字符串,则不能将其与另一个数字相加。但是,如果您有值为 的整数变量类型1,它会很容易添加。


我该如何使用它?:

Arduino 的 EthernetIpAdress 页面上,有以下代码:

 #include <Ethernet.h>
 
 // network configuration.  gateway and subnet are optional.
 
  // the media access control (ethernet hardware) address for the shield:
 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };  
 // the router's gateway address:
 byte gateway[] = { 10, 0, 0, 1 };
 // the subnet:
 byte subnet[] = { 255, 255, 0, 0 };
 
 EthernetServer server = EthernetServer(23);
 
 //the IP address is dependent on your network
 IPAddress ip(192,168,1,1);
 void setup()
 {
   // initialize the ethernet device
   Ethernet.begin(mac, ip, gateway, subnet);
 
   // start listening for clients
   server.begin();
 }
 void loop()
 {
   //print out the IP address
   Serial.println(myIPaddress);
 }

在行上IPAddress ip(192,168,1,1);,它创建一个保存 IP 地址的变量。在该行Ethernet.begin(mac, ip, gateway, subnet);中查找变量并将其提供给Ethernet库。除了试图阻止人们使用整数类型并使其看起来更干净之外,我不知道有什么好处。它可以查找自动发布的 IP 地址,然后将其存储以备后用,因此如果它进入“空闲模式”,它可以请求相同的 IP 地址,因此它几乎就像一个不会干扰其他设备的动态 IP并在按下重置按钮时重置。我确信它有一些用处,但我想不出一个。我只是想告诉你它是什么以及如何使用它。我认为虽然使用起来会更容易#define IPadress 192.168.1.1或类似的东西,如果您希望它易于更改或更具用户可读性。

于 2013-04-16T00:47:14.147 回答