forked from mstrens/grbl_controller_esp32
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtelnet.cpp
63 lines (51 loc) · 1.72 KB
/
telnet.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <WiFi.h> // Built-in
#define MAX_SRV_CLIENTS 1
WiFiServer telnetServer(23);
WiFiClient telnetClient;
void telnetInit() {
telnetServer.begin();
telnetServer.setNoDelay(true) ;
}
void telnetStop() {
telnetClient.stop() ;
telnetServer.stop() ;
}
void checkTelnetConnection() { // check if we can accept a new connection (only 1 connection can be active)
if (telnetServer.hasClient()) {
if (telnetClient && telnetClient.connected()) {
WiFiClient newClient; // Verify if the IP is same than actual conection
newClient = telnetServer.available();
String ip = newClient.remoteIP().toString();
if (ip == telnetClient.remoteIP().toString()) {
telnetClient.stop(); // Reconnect
telnetClient = newClient;
} else { // Disconnect (not allow more than one connection)
newClient.stop();
return;
}
} else { // New TCP client
telnetClient = telnetServer.available();
}
if (!telnetClient) { // No client yet ??? (MS : pas certain que ce soit possible))
return;
}
telnetClient.flush(); // clear input buffer, else you get strange characters
//delay(100);
while (telnetClient.available()) { // Empty buffer in
telnetClient.read();
}
} // end of hasClient()
}
void sendViaTelnet( char c) {
if (telnetClient && telnetClient.connected()) {
telnetClient.print(c) ;
}
}
boolean telnetIsConnected() {
return telnetClient && telnetClient.connected() ;
}
void clearTelnetBuffer() {
while (telnetClient.available()) { // Empty buffer in
telnetClient.read();
}
}