-
Notifications
You must be signed in to change notification settings - Fork 107
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
123 additions
and
8 deletions.
There are no files selected for viewing
108 changes: 108 additions & 0 deletions
108
examples/WiFiAdvancedChatServer/WiFiAdvancedChatServer.ino
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
/* | ||
Advanced WiFi Chat Server | ||
A more advanced server that distributes any incoming messages | ||
to all connected clients but the client the message comes from. | ||
To use, telnet to your device's IP address and type. | ||
You can see the client's input in the serial monitor as well. | ||
Circuit: | ||
* Board with NINA module (Arduino MKR WiFi 1010, MKR VIDOR 4000 and UNO WiFi Rev.2) | ||
*/ | ||
|
||
#include <SPI.h> | ||
#include <WiFiNINA.h> | ||
|
||
#include "arduino_secrets.h" | ||
///////please enter your sensitive data in the Secret tab/arduino_secrets.h | ||
char ssid[] = SECRET_SSID; // your network SSID (name) | ||
char pass[] = SECRET_PASS; // your network password (use for WPA, or use as key for WEP) | ||
|
||
int status = WL_IDLE_STATUS; | ||
|
||
// telnet defaults to port 23 | ||
WiFiServer server(23); | ||
|
||
WiFiClient clients[8]; | ||
|
||
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 WiFi module: | ||
if (WiFi.status() == WL_NO_MODULE) { | ||
Serial.println("Communication with WiFi module failed!"); | ||
// don't continue | ||
while (true); | ||
} | ||
|
||
String fv = WiFi.firmwareVersion(); | ||
if (fv < WIFI_FIRMWARE_LATEST_VERSION) { | ||
Serial.println("Please upgrade the firmware"); | ||
} | ||
|
||
// 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(); | ||
|
||
Serial.print("Chat server address:"); | ||
Serial.println(WiFi.localIP()); | ||
} | ||
|
||
void loop() { | ||
// check for any new client connecting, and say hello (before any incoming data) | ||
WiFiClient newClient = server.accept(); | ||
if (newClient) { | ||
for (byte i=0; i < 8; i++) { | ||
if (!clients[i]) { | ||
Serial.print("We have a new client #"); | ||
Serial.println(i); | ||
newClient.print("Hello, client number: "); | ||
newClient.println(i); | ||
// Once we "accept", the client is no longer tracked by WiFiServer | ||
// so we must store it into our list of clients | ||
clients[i] = newClient; | ||
break; | ||
} | ||
} | ||
} | ||
|
||
// check for incoming data from all clients | ||
for (byte i=0; i < 8; i++) { | ||
if (clients[i] && clients[i].available() > 0) { | ||
// read bytes from a client | ||
byte buffer[80]; | ||
int count = clients[i].read(buffer, 80); | ||
// write the bytes to all other connected clients | ||
for (byte j=0; j < 8; j++) { | ||
if (j != i && clients[j].connected()) { | ||
clients[j].write(buffer, count); | ||
} | ||
} | ||
} | ||
} | ||
|
||
// stop any clients which disconnect | ||
for (byte i=0; i < 8; i++) { | ||
if (clients[i] && !clients[i].connected()) { | ||
Serial.print("disconnect client #"); | ||
Serial.println(i); | ||
clients[i].stop(); | ||
} | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
#define SECRET_SSID "" | ||
#define SECRET_PASS "" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters