Arduino 以太网屏蔽 client.connect() 总是返回错误

标签 arduino ethernet

这个问题我已经找了好几天了,但还是没有找到答案。

我正在尝试根据Arduino IDE提供的示例代码与arduino扩展板建立一个简单的Web客户端连接。这是我尝试执行的简化版本:

#include <Ethernet.h>
#include <SPI.h>


byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte server[] = { 173 ,194, 46, 34 }; // Google

EthernetClient client;

void setup()
{
  Ethernet.begin(mac);
  Serial.begin(9600);

  delay(1000);

  Serial.println(Ethernet.localIP());

  Serial.println("connecting...");

  if (client.connect(server, 80)) {
    Serial.println("connected");
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  } else {
    Serial.println("connection failed");
  }
}

void loop()
{
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    for(;;)
      ;
  }
}

并始终得到答案:

192.168.0.103
connecting...
connection failed

disconnecting.

这意味着 client.connect(server, 80) 失败。我尝试了几个IP地址,结果都一样。该防护罩工作正常,因为我已经尝试了 WebServer 示例,并且似乎工作完美。

硬件上的PS:我使用的是Arduino UNO R3和基于W5100的以太网盾

有什么建议吗?

最佳答案

我看了一下source code以太网库的,假设您有该库的最新版本。在我看来,Arduino EthernetClient connect() 函数需要一个 IPAddress 对象或一个字符串 (char * ) 与远程主机的名称。您正在向它传递一个字节数组,我的猜测是它可能将其解释为字符串。 尝试按如下方式声明 server 全局变量:

IPAddress server(173 ,194, 46, 34);

如果有效,则表明official documentation ,您可能从中获取了代码,已经过时了。

此外,您可以尝试将所有其他参数作为 IPAddress 对象提供给 begin() 函数,这样就不会使用 DHCP,并且可以排除以下问题自动配置。原型(prototype)为:

void begin(uint8_t *mac_address, IPAddress local_ip, IPAddress dns_server, IPAddress gateway, IPAddress subnet);

关于Arduino 以太网屏蔽 client.connect() 总是返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21387597/

相关文章:

c++ - 我可以在 Bigger Linux for Galileo 上的常规 C++ 程序中 #include "arduino.h"吗?

java - 丢弃数字的前 10 位

networking - 使用 tcpdump 在非默认接口(interface)上捕获

c - 列出以太网 USB 适配器接口(interface)

mobile - 移远芯片QIMODE变化为 '+++' & 'ATO'

c++ - Arduino 上带有头文件的奇怪编译器错误

mysql - 将 arduino 引脚号打印到 MySQL

c++ - Arduino:LiquidCrystal 无法使用以太网库进行打印

encoding - 曼彻斯特编码中的同步

networking - 关于以太网、MII、SGMII、RGMII 和 PHY 的说明