Creating a TCP Client with NodeMCU Microcontroller in Station Mode

Sharad Regoti
2 min readJul 10, 2019


Initialize Variables

const char *ssid = "sharad";      // wifi router name
const char *pass = "aINl5jy9"; // wifi router password
const char *host = ""; // server IP Address
const int port = 8000; // server port
int flag = 1; // flag to check for connection existance

Use the TCP Server android app to create a demo server then get the IP & port values from the app & make changes to the code accordingly.

Change the wifi router name & password in the code accordingly.

NOTE: Your Smart Phone Should be Connected to Same Wifi.


void setup(){  
Serial.begin(115200); // initialize serial communication
Serial.print("Connecting to ");
WiFi.mode(WIFI_STA); // set mode to wifi station
WiFi.begin(ssid, pass); // connect to wifi router
while (WiFi.status() != WL_CONNECTED){ // check status of connection
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP()); // print the Ip alocated by router

Initialize the serial communication between Nodemcu & Computer for printing debugging messages.

Set the Nodemcu mode to Wifi Station mode then connect to Wifi router.

Wait while the connection status is not equal to WL_CONNECTED.


void loop() {  
if (flag == 1) { // if true means not connected to any server
if (client.connect(host, port)){ // connect to server
Serial.println("Connected to server");
flag = 0; // reflect the status of connection
else {
if (client.available()) { // check for incomming data from server
String dataFromServer = client.readStringUntil('\r'); Serial.println(dataFromServer);
if (client.connected()) { // check if connection exists
client.println((float(analogRead(A0) * 10)) / 1024); send data
else {
Serial.println("No server available disconnecting"); client.stop();
flag = 1;

If the flag is 1 indicating no connection with the server then try connecting to the server with given IP & Port values. After successful connection change the flag to 0.

If the server connection exists then check for incoming data from the server also send sensor data to the server.

If no connection then disconnect & change the flag to 1.

Github link of the full code