Delphi + Telnet

0

Mam następujące pytanie,
załóżmy że stworzyłem program(klient,serwer) odpalam serwer u kogoś bądź u siebie wszystko jedno i teraz by połączyć się jak wiemy wystarczy w aplikacji klienta wpisać IP sewera, ale teraz chciałbym stworzyć usługę telnetu tzn jeśli program działa np na porcie 2024 i telnetuje się na niego: telnet 111.111.111.111 2024
to program nie ma wbudowanej podejrzewam tej opcji i niemoge się połączyć pozostaje mi tylko łączyć sie bez pośrednio z programu, Jeśli ktoś widział caffeini to pewnie wie o co mi chodzi, prócz tego że mogę się połączyć bez pośrednio z programu to również może się telnetować
telnet 111.111.111.111. 51966
i komendy również są
Jak teraz stworzyć w delphi taką usługę bym mógł się łączyć również telnetem
z góry dzięki

0

Hmm... Generalnie telnet łączy się z zdalnym serwerem i przekazuje bezpośrednio przesyłane dane w formie tekstowej na ekran, a podane z klawiatury wysyła do serwera. W związku z tym możesz zrobić dwie rzeczy:
1) zastosować IdTelnetClient i IdTelnetSerwer w celu komunikacji się między programami, ażeby komendy wysyłane przez program były "ludzkie", to znaczy zrozumiałe i możliwe do wysłania przez człowieka. Jak będziesz wysyłał dane jakoś wpakowane na siłę, to nic Ci z tego nie wyjdzie. Natomiast jak programy będą się komunikować normalnymi tekstowymi metodami, to bez problemu będziesz mógł się zatelnetować i ręcznie wydawać odpowiednie komendy (np. czasem wykorzystuję telneta do łączenia się z serwerem HTTP, żeby odczytać strony o chowającym się źródle ;) )
2) bezpośrednio obsłóżyć jakoś inaczej telneta a inaczej program (np. w programie od razu przy łączeniu się wysłać "wizytówkę" programu, że ma być obsłużony binarnie, a jeśli pierwsza wydana komenda będzie inna, to znaczy, że ktoś się podłączył telnetem i trzeba go obsłużyć tekstowo.
Wady i zalety:
1) prostsze wykonanie, nie trzeba na dwa sposoby obsługiwać, ale skolei więcej danych musi być wysłanych przez program
2) program wysyła mniejszą ilość danych (możesz zamiast liczby w formacie powiedzmy 1234 wysłać chr(12345 div 255)+chr(12345 mod 255), zamiast 5 bajtów masz dwa, a i tak wiesz, że w tym a tym miejscu ma być taka a taka liczba, ale musisz na poziomie socketów na dwa sposoby obsługiwać klienta.

0

przy łączeniu się wysłać "wizytówkę" programu, że ma być obsłużony binarnie, a jeśli pierwsza wydana komenda będzie inna, to znaczy, że ktoś się podłączył telnetem i trzeba go obsłużyć tekstowo.
klienta.

a jak ma ona brzmieć ?

0

Jakkolwiek. Kwestia inwencji twórczej. To może być zwykły znaczek spoza klawiatury (jakiś #155 na przykład), który powie serwerowi, że klient nie jest telnetem... A może to być jakaś dłuższa informacja, nawet w formie tekstowej.

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