S
Hallo DocShoe,
habe mit dem Empfang noch Probleme, das der Connect vom Client beendet wird,
wenn ich in der Routine TcpServerAccept() nur den Befehl
iAnz =ClientSocket->ReceiveBuf(puffer,iAnzP); // Empfangene Daten auslesen
einmal ausführe.
Frage ich es aber in einer Schleife ab, dann bleibt die Verbindung dauerhaft bestehen:
char puffer[1000];
iAnzP=1000;
iAnz =-1;
while(iAnz!=0) { // solange auslesen, bis kein Zeichen mehr empfangen wird
if(frm1_TcpServer->Active==false || oTcpOK==false) { break; } // connect prüfen und ggf. Abbruch der Schleife
Application->ProcessMessages(); // events abarbeiten
iAnz =ClientSocket->ReceiveBuf(puffer,iAnzP); // Empfangene Daten auslesen
zTxt =AnsiString(puffer); // und in String aus Puffer auslesen
//zTxt=ClientSocket->Receiveln("\0"); // geht nur jedes 2.Mal ????
TextRTF(100,clBlue,8,"Arial",-1,RTFE,"\tRecieve\t"+zTxt); // und im RTF ablegen
}
Und sporadisch bekomme ich so auch Bruchstücke des Vorgängerdatensatzes mit rein (immer wenn schnell hintereinander Daten kommen). Irgendwie verstehe ich
nicht, warum unter Accept Daten eingelesen werden und nicht wie bei TcpClient
mittels Recieve Befehl...
Die Fehlermeldung tritt nur auf, wenn mind. 1x Daten gekommen sind. Leider
sind diese Meldungen ja nicht sehr aussagekräftig und Debugmodus komme ich
nicht weiter, weil der Fehler erst auftritt, wenn der eigentliche Quellcode
abgearbeitet ist bzw. keiner mehr vorhanden ist.
Gruß Stefan