il codice sotto riportato, preso in parte prestito dalla rete, codificato per Borland Builder C++, ha lo scopo catturare tutto il testo proveniente da socket da un client ed infine, una volta ottenuto completamente il testo, richiamare MiaFunzione().
Dato che il testo trasmesso dal cilent verso il server non viene ricevuto completo in una singola trasmissione, ho pensato di usare un secondo buffer che viene eliminato solo dopo aver richiamato MiaFunzione().
Per il secondo buffer2 ho provato, come suggeritomi da un utente in questo forum, ad utilizzare una String buffer2; in quanto mi libera da funzioni tipo realloc() et similia, ma ho il problema della sua distruzione una volta usato tale buffer2 o almeno, io non ho ancora scoperto come distruggere tale oggetto in modo da averne uno nuovo quando devo ricevere un nuovo testo.
Purtroppp pecco di inesperienza e magari vi sono metodi molto più puliti e raffinati, quindi chiedo a voi consigli.
grazie
codice:void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { char *buffer; String buffer2; int Size; int ByteRecived; Size = Socket->ReceiveLength(); buffer = new char[buffer_len]; ByteRecived=Socket->ReceiveBuf(buffer, buffer_len); // inizio a costruire il mio buffer if(Size > 0) { buffer2+=buffer; } if( strstr(buffer2.c_str(), "FINETESTO") ) { MiaFunzione(); delete[] buffer; } }