I 'll suggest not to use TCP connection for that but a direct HTTP call.
I use SIM 800 to get data from a server and to send data.
When I get the data from the server, I set the SIM800 as server and get data from TCP. I notice I get 3 blocs of data like this:
REMOTE IP: 99.999.999.9
the message from the server
CLOSED
But between the message and the "CLOSED", it last about 5 sec. So maybe this is what's happening on the server to which you send the data.
So maybe it's would be better to try an HTTP connection to send the data:
AT+HTTPINIT
AT+HTTPPARA="CID",1
AT+HTTPPARA="URL","thesitetocall.com/insert.php"
AT+HTTPPARA="CONTENT","application/x-www-form-urlencoded"
AT+HTTPDATA=11,5000 -> the first value is the number of bytes you'll send
then you just sim800l.println("data=coucou");
AT+HTTPACTION=1 --> 1 = POST, 0 = GET
AT+HTTPREAD --> read answer from the server
AT+HTTPTERM
In my case I find this faster
Hope this help