Prośba o gotowce z TIdTCPClient i server

0

Robiąc aplikację serwisową, oparłem ją o TServerSocket i TClientSocket. Ale cos 'zawodzi' ten mechanizm (serwisy zamrazaja porty na komputerze serwera po kilku godzinach dzialania i wymagany jest restart, a na dluzsza mete nie moge stale resetowac serwisow by bylo OK). Wiec chcialbym przekodzic to na TCP z Indy.
Moze ktos ma sprawnie dzialajace(niezawodnie) rozwiazanie oparte na tych kontrolkach ? W necie wiem ze cos jest ale mam ograniczony czas, bedac zawalony innymi rzeczami. Potrzebuje sprawnych metod do: przesylania/odbierania tekstu , obsluge serwera na Disconnect i Connect klientow.

0

Service Application + Indy bardzo fajnie się programuje jak wiesz oczywiście jak korzystać z Indy.
Tu masz troche info jak sobie z tym poradzić bo nie chce mi się dwa razy o tym samym pisać: http://4programmers.net/Forum/591227?h=#id591227
Gotowców nie dostaniesz. Ja sam troche czasu nad tym spędziłem i jakoś mi się opłaciło.
Osobiście uważam że forum jest po to aby pisać o konkretnych problemach, a nie ogólnie: "dajcie mi to, napiszcie za mnie tamto".

0

No rzeczywiście pomogłeś, ale skoro takiś pr0 to mam parę pytań:

  1. W którym zdarzeniu po stronie klienta mam odbierać dane ?
  2. Po stronie serwera, gdzie jest unikalny HANDLE danego klienta i w jakim zdarzeniu to moglbym obsluzyc(tylko execute?) ?
    Tu jest sampel z INDY
procedure TForm1.serwExecute(AContext: TIdContext);
  var
    lCmd: string;
  begin
    lCmd := Trim(AContext.Connection.IOHandler.ReadLn);
    if AnsiSameText(lCmd, 'HELP') then
    begin
        AContext.Connection.IOHandler.WriteLn('HELP');
        AContext.Connection.IOHandler.WriteLn('QUIT');
        AContext.Connection.IOHandler.WriteLn('GETTIMESTAMP');
        AContext.Connection.IOHandler.WriteLn('');
    end

Odiberanie i wysylanie po tej stronie dziala. Ale jak odroznic kto wyslal, i do kogo odeslac ? w TSocketserver polaczenia z klientami byly stablicowane tak:

Serwer.Socket.ActiveConnections //ilosc podlaczonych klientow
Serwer.Socket.Connections[I].SocketHandle //uchwyty klientow
Serwer.Socket.Connections[I].SendText //wyslanie do odpowiedniego klienta

Wiec jak bys mogl podac odpowiedniki tych trzech powyzszych rzeczy to juz z gorki :-)

0

Hehe. Wszyscy mają z tym problem. Widać w twoim kodzie wpływ tutoriali i dem do Indy. To droga do nikąd bo potem pojawiają się pytania z serii: jak wysłać to do konkretnego klienta, skąd mam wiedzieć od kogo to przyszło itp. itd.
Tu masz kod źródłowy trojanka do analizy:
http://en.pudn.com/downloads94/sourcecode/hack/trojan/detail372848_en.html
Polecam przeanalizować plik Serwera Unit1.pas i procedurę IdTCPServer1Execute. Wysyłanie komend do Klienta masz w całej reszcie kodu. Polecam bliżej przyjżeć się rekordowi Ponlineinf i jego pole AThread.
Klienta znajdziesz w pliku mainserve.pas i procedure TClientHandleThread.HandleInput chociaż ja osobiście używam własnego wątku i w Excute odbieram komendy przez zwykłe IdTCPClient.ReadLn.

Jak jesteś co najmniej średnio kapujący jeśli chodzi o delphi to znajdziesz tam rozwiącanie swoich problemów z Indy.

Aha. Stronka pudn.com czasem długo odpowiada na zapytania więc cierpliwości.

0

No dobra, trzeba sie tam zarejestrowac itd, ale mam nadzieje ze dobiore sie do tego sourca.
Co do brania przykladow to coz, jest ubogo zawsze w tych tematach, ale wiedzac te 3 rzeczy co napisalem, nie jest trudne odrozniac do kogo wyslac, ale tu jednak jest troche inaczej niz w TServerSocket, wiec stad moje pytania.

0

mgyver za bardzo się nie popisałeś z tą stroną. zarejestrowanie nic nie daje trzeba tam wrzucić swoje source i to nie wiadomo ile lub zapłacic za konto vip.

więc moim zdaniem mgyver sieje komercją

0

Mam nadzieję że mnie ładnie przeprosicie zaraz ;-P bo jak się rozejżysz dobrze to na dole strony zobaczysz pliki *.dfm i *.pas które jakimś cudem otwierają mi się w przeglądarce za friko.

0

a ja dodałem jednak tylko jedno moje source i teraz mam dostęp do sporej ilosci kodu .
no i sorry nie zwróciłem uwagi na File lista xD

daje za to gorący HOT http://s.pudn.com/search_hot_en.asp?k=%D4%B6%B3%CC%BF%D8%D6%C6+delphi#

0

No właśnie :-)
Softu troche jest ale wiekszość źródełek jest starawa wiec bardziej do nauki się nadają.

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