user77295: #include <SoftwareSerial.h>

const byte rxPin = 2;
const byte txPin = 3;

SoftwareSerial ESP8266 (rxPin, txPin);

void setup() {
  Serial.begin(115200);   
  ESP8266.begin(115200);
  delay(2000);
}

void printResponse() {
  String s="";
  while (ESP8266.available()) {
    s+=ESP8266.readStringUntil('\n');
  }
  
  Serial.println(s);
  // now here you can parse and look for "+IPD" look for another line ending (if there is) and then extract the numeric value. 
}

void loop() {

  ESP8266.println("AT+CIPMUX=1");
  delay(1000);
  printResponse();

  ESP8266.println("AT+CIPSTART=4,\"TCP\",\"www.tcpss.000webhostapp.com\",80");
  delay(1000);
  printResponse();

  String cmd = "GET /test.html HTTP/1.1";
  ESP8266.println("AT+CIPSEND=4," + String(cmd.length() + 4));
  delay(1000);

  ESP8266.println(cmd);
  delay(1000);
  ESP8266.println();
  delay(1000);
  printResponse();

  delay(5000);
}

i have run this code and i am able to get this  response from server like "+ipd 4,41".... what does it mean?
here is the response after run the code in arduino......
WIFI GOT IP
AT+CIPLUX=1


OK
AT+CHPSTART=4,"TCP","www.tcpss.000webhostapp.com",80

4,CONNEC
AR)CR5NB⸮b⸮⸮k

j⸮L⸮⸮
Recv 27 bytes

SEND OK

+IPD,4,41

Thanks in advance.....

user4143: There's two things to know here:

You're seeing corruption in your output because SoftwareSerial is not capable of working reliably at 115200 baud. You need to reconfigure your ESP8266 to operate at a lower baud rate (such as 9600) to be able to use it with an Arduino that doesn't have enough physical UARTs.
The response +IPD,4,41 is telling you about the response. It's not itself the response.

It means "IP Data on channel 4 of length 41". It is then your responsibility to request that data from the ESP8266 using whatever AT command the ESP8266 requires.
Personally I would scrap the AT firmware and program the ESP8266 directly. That way you solve both problems: you can choose what baud rate to communicate at (if you even need to communicate to an Arduino at all), and you have no AT commands to parse or craft. It is a far more efficient way of working with the ESP8266 that trying to fudge things with the AT firmware and an Arduino.

user40646: SoftwareSerial does not works well for baud rate higher than 9600bps, you need to change your Arduino and ESP8266 to operate at 9600bps.

Use the AT+UART_DEF=9600,8,1,0,0 to set the ESP8266 to 9600Baud, with 8 bit, 1 stop bit and no parity. And also remember to configure the Arduino accordingly. The AT command with _DEF suffix means it will only need to be set once and the configuration will be saved in the ESP8266. ESP8266 AT Command Set would be handy when programming the ESP8266 with AT Commands.

Add longer delay after sending AT+CIPSEND and Get request as those network activities sometime take longer time to establish.

The +IPD,4,41 means that Connect 4 (which you established with AT+CIPSTART is connected and there are 41 bytes payload waiting to be read. You can refer to ESP8266 AT Command Examples for more information.



77295: <pre><code>#include &lt;SoftwareSerial.h&gt;

const byte rxPin = 2;
const byte txPin = 3;

SoftwareSerial ESP8266 (rxPin, txPin);

void setup() {
  Serial.begin(115200);   
  ESP8266.begin(115200);
  delay(2000);
}

void printResponse() {
  String s=&quot;&quot;;
  while (ESP8266.available()) {
    s+=ESP8266.readStringUntil('\n');
  }
  
  Serial.println(s);
  // now here you can parse and look for &quot;+IPD&quot; look for another line ending (if there is) and then extract the numeric value. 
}

void loop() {

  ESP8266.println(&quot;AT+CIPMUX=1&quot;);
  delay(1000);
  printResponse();

  ESP8266.println(&quot;AT+CIPSTART=4,\&quot;TCP\&quot;,\&quot;www.tcpss.000webhostapp.com\&quot;,80&quot;);
  delay(1000);
  printResponse();

  String cmd = &quot;GET /test.html HTTP/1.1&quot;;
  ESP8266.println(&quot;AT+CIPSEND=4,&quot; + String(cmd.length() + 4));
  delay(1000);

  ESP8266.println(cmd);
  delay(1000);
  ESP8266.println();
  delay(1000);
  printResponse();

  delay(5000);
}
</code></pre>
<p>i have run this code and i am able to get this  response from server like &quot;+ipd 4,41&quot;.... what does it mean?
here is the response after run the code in arduino......</p>
<pre><code>WIFI GOT IP
AT+CIPLUX=1


OK
AT+CHPSTART=4,&quot;TCP&quot;,&quot;www.tcpss.000webhostapp.com&quot;,80

4,CONNEC
AR)CR5NB⸮b⸮⸮k

j⸮L⸮⸮
Recv 27 bytes

SEND OK

+IPD,4,41
</code></pre>
<p>Thanks in advance.....</p>
 4143: <p>There's two things to know here:</p>
<ol>
<li>You're seeing corruption in your output because SoftwareSerial is not capable of working reliably at 115200 baud. You need to reconfigure your ESP8266 to operate at a lower baud rate (such as 9600) to be able to use it with an Arduino that doesn't have enough physical UARTs.</li>
<li>The response <code>+IPD,4,41</code> is telling you <em>about</em> the response. It's not itself the response.</li>
</ol>
<p>It means &quot;IP Data on channel 4 of length 41&quot;. It is then your responsibility to request that data from the ESP8266 using whatever AT command the ESP8266 requires.</p>
<p>Personally I would scrap the AT firmware and program the ESP8266 directly. That way you solve both problems: you can choose what baud rate to communicate at (if you even need to communicate to an Arduino at all), and you have no AT commands to parse or craft. It is a far more efficient way of working with the ESP8266 that trying to fudge things with the AT firmware and an Arduino.</p>
 40646: <p><code>SoftwareSerial</code> does not works well for baud rate higher than 9600bps, you need to change your Arduino and ESP8266 to operate at 9600bps.</p>
<ol>
<li><p>Use the <code>AT+UART_DEF=9600,8,1,0,0</code> to set the ESP8266 to 9600Baud, with 8 bit, 1 stop bit and no parity. And also remember to configure the Arduino accordingly. The AT command with _DEF suffix means it will only need to be set once and the configuration will be saved in the ESP8266. <a href="https://www.espressif.com/sites/default/files/documentation/4a-esp8266_at_instruction_set_en.pdf" rel="nofollow noreferrer">ESP8266 AT Command Set</a> would be handy when programming the ESP8266 with AT Commands.</p>
</li>
<li><p>Add longer delay after sending <code>AT+CIPSEND</code> and <code>Get</code> request as those network activities sometime take longer time to establish.</p>
</li>
<li><p>The <code>+IPD,4,41</code> means that Connect 4 (which you established with <code>AT+CIPSTART</code> is connected and there are 41 bytes payload waiting to be read. You can refer to <a href="https://www.espressif.com/sites/default/files/documentation/4b-esp8266_at_command_examples_en.pdf" rel="nofollow noreferrer">ESP8266 AT Command Examples</a> for more information.</p>
</li>
</ol>
