Ładny brzuch

Witam!!!
Gdy przesylam dane (wieksza ilosc rzedu kilku kilobajtow) za pomoca Socketow i odbieram je funkcja ReceiveBuf to pojawia sie problem. Mianowicie, jak probuje zapisac przychodzace dane to pojawia sie blad - poniewaz wszystkie dane nie zostaly jeszcze przeslane.
Jesli wstawie w funkcji ReceiveBuf polecenie ShowMessage(""), to wszystko jest w pozadku. Czy ktos wie, jak moge odebrac wszystkie dane(np. te kilka kilobajtow wyslanych jednoczesnie) w taki sposob, aby funkcja ReceiveBuf wywolala sie tylko raz?
Please HELP !!!



Podaj ten nieszczsny kod, ktrym odbierasz dane. Poza tym chyba lepiej jak podzielisz pakiety na mniejsze np. rzdu 1-2kB.

http://www.planeta-delphi.com

void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
int ile=Socket->ReceiveLength();

//ShowMessage(IntToStr(ile));

byte tab[5000]; // przykladowa wartosc
int skopiowane=Socket->ReceiveBuf(tab,5000);
}

Ja bym wysya np. po 2 KB i potwierdza kade odebranie danych, aby sie nie zapychao. Ale nie jsetem pewien bo na C zabardzo sie nie znam.

----
m@il: ali88@tlen.pl
GG: 2083160



Kod na pierwszy rzut oka wydaj si by wporzdku. Nie sprawdz teraz w praktyce bo nie mam BCB zainstalowanego.
Popieram pomys z potwierdzaniem otrzymania pakietu. Bdzie to troch wolniejsze, ale bardziej niezawodne. Nadawca po wysaniu pakietu niech czeka na odpowie, a gdy j dostanie niech wyle kolejny pakiet i tak w kko.

http://www.planeta-delphi.com

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •