< >
Home » Arduino库教程 » Arduino库教程-WIfi无线扩展块101-WiFi Chat Server

Arduino库教程-WIfi无线扩展块101-WiFi Chat Server

WiFi Chat Server

  • 一个简单的服务器,将任何传入的消息分发给所有连接的客户端。使用时,打开一个终端窗口,远程登录到您的WiFi shield或MKR1000的IP地址,并输入。任何传入的文本将被发送到所有连接的客户端(除了正在输入的那个客户端)。此外,你同样能够在你的Arduino软件(IDE)串口监视器里看到客户端的输入。

硬件要求

  • Arduino WiFi Shield 101
  • Arduino or Genuino Zero board
    或者
  • MKR1000

电路

  • 数字引脚7被用来作为WiFi Shield 101 和 开发板的握手引脚使用,而不应该被占用。

  • 这个例子里你应该进入一个连接到互联网的802.11b/g无线网络。你需要改变程序里的网络设置来符合您的特定网络SSID。

  • 对于使用WPA/WPA2个人加密的网络,你需要的SSID和密码。扩展块将无法通过WPA2企业加密连接到网络。

  • WEP网络密码进制字符串作为键。一个WEP网络可以有4种不同的钥匙;每个按键都分配了一个“关键指标”的价值。WEP加密的网络,你需要SSID,key,和key number。

请输入图片描述
图由 Fritzing 绘制
在上图,Arduino 或 Genuino Zero 开发板应该在堆叠在 WiFi shield上面。

样例代码

/*
 Chat  Server

 A simple server that distributes any incoming messages to all
 connected clients.  To use telnet to  your device's IP address and type.
 You can see the client's input in the serial monitor as well.

 This example is written for a network using WPA encryption. For
 WEP or WPA, change the Wifi.begin() call accordingly.


 Circuit:
 * WiFi shield attached

 created 18 Dec 2009
 by David A. Mellis
 modified 31 May 2012
 by Tom Igoe

 */

#include <SPI.h>
#include <WiFi101.h>

char ssid[] = "yourNetwork"; //  your network SSID (name)
char pass[] = "secretPassword";    // your network password (use for WPA, or use as key for WEP)

int keyIndex = 0;            // your network key Index number (needed only for WEP)

int status = WL_IDLE_STATUS;

WiFiServer server(23);

boolean alreadyConnected = false; // whether or not the client was connected previously

void setup() {
  //Initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // don't continue:
    while (true);
  }

  // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
    status = WiFi.begin(ssid, pass);

    // wait 10 seconds for connection:
    delay(10000);
  }

  // start the server:
  server.begin();
  // you're connected now, so print out the status:
  printWifiStatus();
}


void loop() {
  // wait for a new client:
  WiFiClient client = server.available();


  // when the client sends the first byte, say hello:
  if (client) {
    if (!alreadyConnected) {
      // clead out the input buffer:
      client.flush();
      Serial.println("We have a new client");
      client.println("Hello, client!");
      alreadyConnected = true;
    }

    if (client.available() > 0) {
      // read the bytes incoming from the client:
      char thisChar = client.read();
      // echo the bytes back to the client:
      server.write(thisChar);
      // echo the bytes to the server as well:
      Serial.write(thisChar);
    }
  }
}


void printWifiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}

[Get Code]
更多

  • WiFi library – WiFi101 库的参考网页

  • WiFi Shield – WiFi 扩展板 101 的产品细节

  • MKR1000 – MKR1000 板的产品细节

  • Connect No Encryption: 演示如何连接到一个开放的网络。

  • Connect With WEP: 演示如何连接到用WEP加密的网络。

  • Connect With WPA: 演示如何连接到一个用WPA2个人加密网络。

  • Scan Networks:显示出所有在范围内的无线网络。

  • Simple Web Server WiFi: 通过打开和关闭一个LED来访问这个简单的Web服务器

  • UDP NTP Client: 通过UDP查询网络时间协议(NTP)服务器。

  • WiFi Chat Server: 建立一个简单的聊天服务器。

  • WiFi Web Client: 连接到一个远程服务器。

  • WiFi Web Client Repeating: 反复做HTTP请求到服务器。

  • WiFi Web Server: 通过模拟输入值来服务一个来自WIfi无线扩展块的网页。

  • WiFi Send Receive UDP String: 发送和接收UDP字符串。

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: arduino库教程, arduino wifi无线扩展块101, arduino wifi chat server