[Delphi] ICS - TWSocket i Receive

0

W komponencie do obsługi GG wykorzystuję TWSocket (z pakietu ICS). Kiedy serwer przesyła pakiet na podstawie jego typu (w nagłówku) jest wykonywana odpowiednia czynność. Ilość danych do odbioru rówznież znajduje się w nagłówku. Odbieram dane procedurą:

 GG.Receive(@DaneGg, Naglowek.Dlugosc)

Przy małej długości nie ma problemów, ale przy większych program odbiera tylko część danych (np. przy dlugości pakietu 3000, odbiera tylko 1400).

DaneGG są zdeklarowane nast.:

TDaneGg = packed record
liczby: integer;
Tekst: array[1..4000] of Char;
end;

0

Miałem kiedyś taki problem ze standardowym Delphiowskim socketem, wystarcvzyło zmienić ReceiveText na ReceiveBuf (albo odwrotnie). Nie znam pakietu ICS, ale możesz sprawdzić, czy nie ma tam jakiegoś innego Receive.

0

Właśnie w TWSocket Receive odbiera bufor, a ReceiveText zajmuje się odbiorem tekstu...

0

Witam
Przytłaczam się do postu mam identyczny problem dokładnie to samo występuje w moim programie a ReceiveBuf nie za bardzo się nadaje do rozwiązania tego problemu ( lub nich ktos poda przyklad jego zastosowania)
proszę o pomoc
pozd.

0

Równo po 2 miesiącach i 2 dniach rozwiązałem problem... :) Program sprawdza ile powinien pobrać, i najpierw gromadzi to w bufforze (W przypadku dłuższych pakietów ICS, jak i inne sockety, dzieli je na mniejscze części... I wywołuje kilka razy OnDataAvailable, dla jednego pakietu.), a jak już pobierze wszystko to bufor kopiuje gdzie trzeba i wykorzystuje... Rozwiązanie może banalne, ale jakże właściwe. :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1