0

我希望核心在使用此命令通过浏览器访问时像 Web 服务器一样显示文本 >>>(client.println("Sorry");) 它应该在浏览器中显示“抱歉”,对吗?但是当我在浏览器中输入内核的 IP 时。它说“此网页不可用”

感谢您的阅读。

TCPServer server = TCPServer(80);
    TCPClient client;

    void setup()
    {
      // start listening for clients
      server.begin();

      // Make sure your Serial Terminal app is closed before powering your Core
      Serial.begin(9600);
      // Now open your Serial Terminal, and hit any key to continue!
      while(!Serial.available()) SPARK_WLAN_Loop();

      Serial.println(WiFi.localIP());
      Serial.println(WiFi.subnetMask());
      Serial.println(WiFi.gatewayIP());
      Serial.println(WiFi.SSID());
    }

    void loop()
    {
      if (client.connected()) {
        // echo all available bytes back to the client
        while (client.available()) {
          server.write(client.read());
          server.write("Hello world!");
          client.println("Sorry"); //<<<<<<<<<<<<<<should show this
        }
      } else {
        // if no client is yet connected, check for a new connection
        client = server.available();
      }
    }

这是我在arduino和以太网sheild中使用的代码,它工作正常

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

//Enter a new MAC address from your computer MAC plus one.
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };
EthernetServer server(80); // Create new server object at selected port

void setup() {

  Serial.begin(9600);
  Serial.println("Requesting ip address ...");
  Ethernet.begin(mac,ip,gateway,subnet);
  Serial.print("My IP address: ");
  Serial.print(Ethernet.localIP());
  server.begin(); // begin listening
}

void loop() {
  EthernetClient client = server.available(); // Get connection
  if(server.available()){ // check if there are connection
    Serial.println("new client connection");
    while (client.connected()) { // check if the client still alive
      if (client.available()) { // check if the connection are still alive
        char c = client.read(); // read data from Ethernet buffer
        if(c=='='){ p = client.read(); }
        Serial.write(c);
        if(c == '\n'){ // check if there are terminate character
          client.println("sorry");
          break;
        }
      }
    }
    client.stop(); // disconnect from client
    Serial.println("client disconnected");
  }
  delay(1000);
}///// credit P'O ITE
4

1 回答 1

0

浏览器不会对你所做的很满意。您返回给浏览器的任何内容都不会遵守 HTTP 协议规范。您应该使用 telnet 客户端在端口 80 上打开到核心 IP 地址的连接。然后你会看到更接近你预期的东西。

使用 SparkCore 和它的适度工具返回网页是可能的,但您必须严格控制大小。要返回网页,浏览器会很满意,您可以忽略请求并始终返回:

HTTP/1.1 200 OK
Date: Tue, 31 Mar 2015 22:38:34 GMT
Server: SparkCore
Content-Type: text/html; charset=UTF-8
Content-Length: 138
Accept-Ranges: bytes
Connection: close

<html>
<head>
  <title>An Example Page</title>
</head>
<body>
  Hello World, this is a very simple HTML document.
</body>
</html>

这是一个最小的 HTTP 响应。我没有测试过它,但我很有信心它会起作用。要了解有关 HTTP 的更多信息以及您需要做什么,请查看 wikipedia:

http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol

我还在 community.spark.io 上找到了一个好帖子:

http://community.spark.io/t/spark-core-web-server-solved/10110/4

祝你好运!

于 2015-03-31T21:40:02.123 回答