logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Komponent do komunikatora w Delphi 7 z obsługą protokołów sieciowych

agappe 02 Maj 2009 21:09 3263 11
REKLAMA
  • #1 6482640
    agappe
    Poziom 16  
    Posty: 239
    Pomógł: 8
    Ocena: 8
    Witam, chciałem na swoje potrzeby napisać komunikator w Delphi 7 z użyciem jakichś komponentów, tak żeby móc się komunikowac z użytkownikami z poza natu. Wczesniej robiłem to na protokole gg z wykorzystaniem HGG ale od DAWNA już ten komponent nie dziala poprawnie.
    Moze ktos coś polecić, jakis komponent przez ktory mozna sie komunikowac na podstawie jakiegos protokolu? Napisal bym cos swojego ale do tego potrzebny jest serwer a do rozwiazan "domowych" jest to zbyt duzy wydatek ;)
  • REKLAMA
  • #2 6483808
    BABCIA ADHD
    Poziom 11  
    Posty: 11
    Witam,

    Proponuje użyć wbudowany w Delphi pakiet INDY. Są to komponenty do zapisu / odczytu stron (http), komunikacji z serwerem (FTP) czy np. do stworzenia własnego GG.
    Do tego służą komponenty IdTCPClient oraz IdTCPServer.

    Dobry artykuł wyjaśniający krok po kroku tą komunikację :
    http://4programmers.net/Delphi/INDY

    (O komunikacji TCP w dziale Komponenty INDY w praktyce --> TCP)
  • #3 6484093
    agappe
    Poziom 16  
    Posty: 239
    Pomógł: 8
    Ocena: 8
    Wiem wiem, ale http i ftp nie są wygodnymi sposobami komunikacji bo nie informuje bezposrednio o wiadomości ktora przyszła ;/ czyli nie jest możliwe przekazywanie informacji "na żywo" a komponenty dot. TCP wymagają żeby przynajmniej jeden komp. miał zew. IP albo oba były w tej samej sieci a ja chce ustanowić komunikacje pomiędzy komputerami z innej sieci. Myślałem nad ftp i http ale dużo wygodniejsze było by przesyłanie wiadomości "na żywo" ;/. Ma ktoś jeszcze jakieś pomysły?
  • #4 6484133
    BoskiDialer
    Poziom 34  
    Posty: 1530
    Pomógł: 353
    Ocena: 42
    Jak słusznie zauważyłeś, jeden komputer musi mieć zewnętrzny adres IP (lub oba muszą być w sieci). Jeśli nie masz zewnętrznego adresu, to łączysz się z publicznym serwerem - tutaj może być gadu, tlen, czy cokolwiek innego - lub tworzysz swój serwer - jeśli masz dostęp do jakiegoś serwera (konto shell), możesz napisać na niego swój program, masz wtedy możliwość napisania swojego protokołu.
  • REKLAMA
  • #5 6484449
    agappe
    Poziom 16  
    Posty: 239
    Pomógł: 8
    Ocena: 8
    Serwera nie mam i jak już pisałem do rozwiązań "domowych" nie opłaca się wydawać tyle pieniędzy na serwer, oczywiscie komunikatory gg, tlen itp. by byly perfekcyjne ale ani hgg ani tgglite od dawna juz nie działają prawidłowo bo nikt ich nie rozwija. Dlatego właśnie szukam jakiejś nowej drogi komunikacji miedzy dwoma komputerami, żeby móc przesyłać tekst.

    Myślałem nad IRC'em ale nie na wszystkich komputerach działa żeby napisać swojego bota irc (sprawdzałem), więc poco robić coś co niedziała wszędzie ;/
  • #6 6485935
    BABCIA ADHD
    Poziom 11  
    Posty: 11
    No FTP i HTTP nie jest najwygodniejsze, ale znowu nie tak bardzo. W sumie to nie wiem czy takie rozwiązanie jest profesjonalne, niemniej skuteczne ;)

    Wystarczy właściwie sam FTP. Jeśli to jest do zastosowań domowych, to przychodzą mi na myśl dwa sposoby.

    1) FTP. Zakładamy DARMOWY serwer, wystarczy żeby miał kilka mb jest pełno takich yoyo czy ovh.
    -I klientem FTP z dwóch kompów łączymy się na ten serwer
    -Gdy w programie pierwszym wysyłamy wiadomość, tworzymy plik na dysku z tą wiadomością o nazwie np. "C1.txt" i wgrywamy go (za pomocą komponenty FTP) na serwer i usuwamy z dysku.
    -Komputer drugi cały czas sprawdza czy jest plik na serwerze o nazwie "C1.txt". Jeśli jest to go ściąga, odczytuje wysyła w programie a potem USUWA z serwera.

    To samo robi program pierwszy i analogicznie na innych komputerach. Nie wiem jak z szybkością. Rozwiązanie trochę brutalne, ale w teorii skuteczne.

    2) Za pomocą HTTP. Piszemy stronkę w PHP do komunikacji (coś w stylu forum czy shoutbox'a), z użyciem baz danych. Ale miał być program , nie przeglądarka ? Więc piszemy program w którym umieszczamy komponent-przeglądarka (w zakładce Internet chyba) i ładujemy tą stronę.
    Rozwiązanie banalne i również skuteczne, tylko nie wiem czy autor chce mieć to rozwiązanie bo potrzebuje, czy robi ten program dlatego, że chce sobie poprogramować i się sprawdzić ;) Jeśli tak to nie bardzo :)

    Pierwsze rozwiązanie powinno działać, choć nie wiem jak z tym zewnętrznym IP, niemniej nie powinno być trudne czy niewygodne do napisania :)
  • #7 6486079
    kamm24
    Poziom 10  
    Posty: 49
    FTP odpada z prostej przyczyny .. w tym samym czasie mogą się do serwera podłączyć min 2 osoby na serwerach typu yoyo lub ok 15 na innych też darmowych. Dopiero serwery płatne mogą w tym samym czasie obsłużyć nieograniczoną ilość połączeń z ftp (no ale trzeba poszukać bo też nie wszystkie).
    Pozatym przy użyciu ftp jest problem, każdy będzie mógł podejrzeć dane do logowania na ftp i narobić szkód na serwerze.
  • REKLAMA
  • #8 6486188
    BABCIA ADHD
    Poziom 11  
    Posty: 11
    Czy ja wiem czy tak odpada ?

    Skoro to zastosowania dla domu, a mówisz, że do 15 komputerów na raz to chyba i tak dużo. Kto ma w domu 15 kompów ;) Przynajmniej tak zrozumiałem, że do 15 różnych loginów jednocześnie, więc wydaje mi sie to wystarczające nawet dla małej firmy...

    A co do podejrzenia wiadomości / hasła to też nie jestem przekonany. Aby podejrzeć wiadomość trzeba znać nazwę pliku. A ją nie musi znać nawet użytkownik, wystarczy, że zna ją programista i program ;) A jeśli chodzi o hasło to nie trzeba je przechowywać na dysku, można poprosić o podanie za każdym uruchomieniem. Albo zaszyfrować. Jak to robi np. Total Comander.
  • #9 6486226
    kamm24
    Poziom 10  
    Posty: 49
    BABCIA ADHD to nie musi być 15 kompów wystarczy np 15 połączeń z 1 kompa tak jak przez total comander no i trzeba taki serwer znaleźć.
    Podejrzenie wiadomości to tylko jeśli będzie ona przechowywana w pliku na serwerze i nie kasowana. Co do hasła to fakt jeśli będziesz je sam podawał ręcznie przy każdym wejściu do programu to ok nie da się podejrzeć mi chodziło o hasło wpisanie w programie aby nie było trzeba go ciągle podawać.
    Szyfrowanie to już musisz mieć płatny serwer z obsługą ssl inaczej nie da się zaszyfrować danych wysyłanych do serwera - a taki serwer to już jest płatny i nie kosztuje 5 zł miesięcznie - a autor tematu nie chce płacić za serwer
  • REKLAMA
  • #10 6486809
    Sam Sung
    Poziom 33  
    Posty: 2052
    Pomógł: 227
    Ocena: 611
    Ale o co chodzi?
    Zrobiłeś swój komunikator, czy klienta GG ?
    Co rozumiesz przez "móc się komunikowac z użytkownikami spoza natu" ? Przecież ten problem jest już od dawna rozwiązany na wiele sposobów: jest jabber z darmowymi serwerami, GG, tlen i inne. Spokojnie można przesyłać tekst. Są serwery z adminami i działające programy klienckie. Czego im brakuje? ;)
    Jeśli chodzi o zrobienie swojego klienta, który wykorzysta istniejący protokół i utrzymywany przez kogoś serwer, to polecałbym jabbera; http://forum.4programmers.net/viewtopic.php?id=135303 .
    A polowanie na pliki na ftp to jakiś totalny badziew, już lepiej przeysłać e-maile - będzie parę problemów mniej.
  • #11 6487273
    agappe
    Poziom 16  
    Posty: 239
    Pomógł: 8
    Ocena: 8
    Właśnie znalazłem w internecie tego jabbera, tylko chciałem najpierw sprawdzić czy zadziała a poźniej napisać. Niestety Delphi mi się zbuntowało wczoraj i nie chciało się uruchomić ^^. Znalazłem komponent do ICQ. Niestety okazało się, że nie działa a ICQ zaczęła blokować inne klienty niż oficjalny.

    Powiedzcie mi, który plik ściagnąć ze strony
    [ http://code.google.com/p/exodus/source/browse/#svn/trunk/jopl ]
    i jak go zainstalować (jeżeli nie ma napisane) w Delphi.
    Sory ale nigdy nie ściągałem z takich stron komponentów.
  • #12 6489144
    BABCIA ADHD
    Poziom 11  
    Posty: 11
    Do kamm24 : mówią szyfrowanie miałem namyśli nie szyfrowany protokół, a przechowywanie hasła na dysku, ale zaszyfrowanego. Po za tym każdy program, który zapamiętuje hasło tak robi. A jak masz Gadu Gadu ? Tam też jest przechowywane hasło w pliku config, a jego szyfr jest dziecinnie banalny. A kto się boi o to, że podejrzą jego hasło, na własnym kompie ? A wiadomość musi być kasowana, bo tak wynika z założenia i trzeba znać nazwę pliku.

    Do Sam Sung'a : "polowanie na pliki ftp" nie uważam za badziew, tylko za praktyczne rozwiązanie. Jak mówiłem, nie wiem co z szybkością. Natomiast zgadzam się ze stwierdzeniem, że komunikacja dwóch kompów już dawno została rozwiązana. Ale mi się zdaje, że autor sam chciał napisać taki program ? Chyba, że się mylę. Skoro banalna i skuteczna komunikacja przez TCP odpada, gg tleny itp. też to co zostaje ? FTP ew. strony. Ale strony to nie program.

    Do agappe : nie jestem pewien, ale spróbuj ściągnąć wszystkie pliki u umieść je w folderze gdzie Delphi szuka bibliotek (albo w folderze Delphi w podfolderze Lib, albo w Moje dokumenty-->Borland Studnio projects). Potem, zależy czy korzystasz z Delphi 7 czy 2005 (albo z czegoś innego) W 7 było chyba (w menu) "Component" --> Instal new. A w 2005 podobnie. Nie używałem jabbera, więc znajdź jakąś instrukcje do niego i w "Install" wybierz plik *.pas, w którym jest komponent i główne klasy. Pewnie to będzie "JabberUntils.pas" albo coś innego ;) Nie wiem ;)

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik poszukuje sposobu na stworzenie komunikatora w środowisku Delphi 7, umożliwiającego komunikację pomiędzy komputerami znajdującymi się poza siecią lokalną (za NAT-em), bez konieczności stawiania własnego serwera. Dotychczasowe próby oparte na protokole GG i komponencie HGG okazały się nieskuteczne z powodu braku aktualizacji komponentów. Zasugerowano wykorzystanie wbudowanych komponentów Indy (IdTCPClient, IdTCPServer), jednak wskazano, że bezpośrednia komunikacja TCP pomiędzy komputerami za NAT wymaga zewnętrznego adresu IP lub istnienia w tej samej sieci. Jako alternatywę zaproponowano użycie darmowych serwerów FTP lub HTTP jako pośrednika do przesyłania plików z wiadomościami, co jednak spotkało się z uwagami dotyczącymi ograniczeń darmowych serwerów, bezpieczeństwa (dostęp do danych logowania, widoczność plików) oraz efektywności (odpytywanie o nowe wiadomości). Ostatecznie zarekomendowano skorzystanie z istniejących, dojrzałych protokołów z darmowymi serwerami publicznymi, takich jak Jabber. Użytkownik podjął próbę implementacji klienta Jabbera, poszukując komponentów i informacji o ich instalacji. Wspomniano także o nieudanej próbie użycia komponentu do ICQ, który przestał wspierać klientów zewnętrznych.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA