[TClientSocket]Korrekte Paketübertragung falls Winsock Buffer temporär voll ist
-
Hallo ihr lieben!
Ich hab zunächst folgendes geschrieben:int z = 0; do { //-----Paket prüfen und senden if(!Packet.empty() && ClientSocket1->Socket->Connected) z = ClientSocket1->Socket->SendBuf( &Packet[0], Packet.size()); //--------------- if(z == -1) { for(int i = 0; i < 100; i++) { Sleep(10); Application->ProcessMessages(); } } } while(z == -1); //-------Wenn Winsock Puffer voll, warte und sende erneut
Sinn und zweck ist falls der Winsock Puffer temporär voll ist (SendBuf -1 zurück gibt) und keine Daten versendet werden können, dass solange mit einer Wartezeit der Sendevorgang wiederholt wird bis die Übertragung vollständig ist.
Meine Frage ist nun ob man dies so machen kann oder soll ich noch die gesendeten Byte als integer die SendBuf zurückgibt mit Packet.size() abgleichen ob auch wirklich alles an den Winsock Puffer übergeben wurde? Wie würdet ihr das machen?