Zrywanie połączeń TCP i/lub Telnet

0

witam

Mam następujący problem:
wybierając komponent TCP lub TELNET z Indy w Delphi wykonuję pętlę dla kilku rekordów, gdzie otwieram połączenie tcp lub telnet, wysyłam treść i w wyniku otrzymuję status OK i kolejny rekord nie chce już się wysłać w wyniku czego otrzymuję komunikat "connection closed gracefully"
Podłączyłem się przez WireSharka i pierwszy rekord przechodzi a kolejnych już brak.
Próbowałem na różne sposoby. Raz otwoiieram połączenie, następnie przesyłam rekord, zamykam połączenie i próbuję przy kolejnym rekordzie znowu otworzyć połączenie. Praktycznie za każdym razem efekt przy kolejnym rekordzie jest ten sam.
Nieraz otrzymuję błąd #10061.
Wykorzystuję Delphi 7 i komponent TCP lub Telnet z Indy 9.

0

KOD

0
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i:integer;
begin
        IdTCPClient1.Host:=iniplik.ReadString('cfg','host','172.27.102.2');
        IdTCPClient1.Port:=iniplik.ReadString('cfg','port','13000');
        If not IdTCPClient1.connected then IdTCPClient1.Connect();
        for i:= 1 to form1.rcp1.Count do
        begin
                if form1.rcp1.Checked[i-1] then
                begin
                        try
                                IdTCPClient1.SendCmd('ustaw_uprawnienia,0,'+trim(copy(form1.rcp1.Items[i-1],1,2))+','+trim(form1.qu.fieldbyname('KARTA').AsString)+',1,1,0,0,0,0,0,0,0,0,0,0'+#13);
                        except
                                raise
                        end;
                end
       end;
       IdTCPClient1.Disconnect;
end;

Ustawienia dla komponentu są domyślne, gdzie ustawiam tylko adres hosta i port.
Wynikiem w WireShar jest ciąg, który zwraca status OK.
Kolejny rekord już nie przechodzi, gdyż zwracany jest błąd "connection closed gracefully".
Nic dodatkowo nie ustawiałem jak standardowy komponent TCP lub Telnet (wiem, że lepszym rozwiązaniem jest TCP).

0
  1. kod wkleja się w odpowiednie znaczniki i FORMATUJE
  2. to jest kod klienta, który nie ma nic wspólnego z zamykaniem/zrywaniem połączenia po stronie serwera
  3. który to jest kolejny rekord?
  4. przecież po stronie klienta sam zamykasz połączenie
0

Oczywiście, po stronie klienta próbuję otworzyć połączenie z serwerem i po wykoniu wszystkich rekordów zamykam je na samym końcu.
Pewnie samo połączenie mogę zamknąć dopiero przy zamknięciu programu ale tu już zacząłem sprawdzać różne możliwości.
Gdybym nawet nie zrobił zamknięcia to jednakowo się kończy tym samym komunikatem.
Zawsze się to dzieje po pierwszym rekordzie.
Gdy sprawdzam poprawność wybierania kolejnych rekordów i zamiast wysyłania do serwera wybieram np. wyświtlanie w memo to wszystko jest poprawnie i w rzeczywistości uzyskuję wszystkie rekordy.

0

co to znaczy Zawsze się to dzieje po pierwszym rekordzie.??? Czyli kiedy? Twój kod nigdzie nie wysyła kolejnych rekordów. Albo dajesz CAŁY kod albo przenieś się na forum wróżbiarskie bo tutaj nikt się nie będzie domyślał co próbujesz zrobić.

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