Serial communication between an ESP8266 and Arduino Mega2560

Hello, I have been trying to make an esp8266 module give the value of a variable to an arduino mega2560 through serial communication, but in the arduino I only receive -1, I add the code and thank you very much in advance if someone can help me.

Code to esp8266

int a=5;

void setup() {
  Serial.begin(9600);
}

void loop() {
 // Serial.print(a);
  Serial.write(a);
}

Code to ArduinoMega2560

void setup() {
  Serial.begin(9600);
  Serial2.begin(9600);
}

void loop() {
  if(Serial2.available()>0){
    int com =Serial.read();
    Serial.print(com); 
  }
}

Oops

1. Connect NodeMCU/ESP8266 and MEGA as per Fig-1; where, NodeMCU uses Software UART Port (Hardware UART Port is engaed with IDE/PC/SM).
uartNodeMega
Figure-1:

2. Upload the following sketch (your one with some additions) into NodeMCU.

#include <SoftwareSerial.h>
SoftwareSerial SUART(D2, D1); //SRX = D2 = GPIO-4; STX = D1 = GPIO-5
int a = 5;

void setup()
{
  Serial.begin(9600);
  SUART.begin(9600);
}

void loop()
{
  SUART.write(a);
  delay(1000);     //test interval
}

3. Upload your sketch in MEGA having done correction as pointed in post #2 @anon73444976.

4. Check that MEGA's Serial Monitor shows:

5
5
5
5
5

Thank you very much for the help, now I have communication between the two devices thanks to your help, but it only throws random numbers.

We can't see your code

This is the code.

ESP8266

#include <SoftwareSerial.h>
SoftwareSerial SUART(D2, D1);

int a=5;

void setup() {
  Serial.begin(9600);
  SUART.begin(9600);
}

void loop() {
  SUART.write(a);
  delay(1000);
}

Arduino MEGA2560

void setup() {
  Serial.begin(9600);
  Serial2.begin(9600);
}

void loop() {
  if(Serial2.available()>0){
    int com =Serial2.read();
    Serial.print(com); 
  }
}

I'm using the connections showed in the @GolamMostafa 's image

That would be better as a "println", IMO

You must use logic level converters to connect the 3.3V ESP8266 and the 5V Mega I/O pins, otherwise you are very likely to damage one or both boards.

Practically. NodeMCU's IO pins are 5V tolerant and there are numerous references in the net.

===> Serial.println(com)

As a result, received data bytes will appear line-after-line in the Serial Monitor and it will be easier to see what is being arrived.