Client/Server Socket "coś ala ServerSide 1.6"

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

Client/Server Socket "coś ala ServerSide 1.6"

Nowy postprzez Koziol » wtorek, 22 lipca 2008, 17:50

Poszukuje opisu tudzież gotowego kodu źródłowego (nie żeby ctrl+c i ctrl+v) do apilkacji klienta i servera dla tpliku wymienionego w temacie (ServerSide 1.6) z downloadu (http://cyfbar.republika.pl/userprog.htm).

Nie mogę dojść do tego jak zrobić coś typu bany, listę użytkowników, prywatne wiadomości itp. w oparciu o komponent Client/Server Socket.

W oparciu o tutorial http://cyfbar.republika.pl/kurs5.html oarz rzeczy znalezione w sieci udało mi się zrozumieć metode działania socketów w borlandzie ale z w/w rzeczami mam nadal problem.

Z góry dziękuje za pomoc ;)
Avatar użytkownika
Koziol
Intelektryk
Intelektryk
 
Posty: 144
Dołączył(a): niedziela, 13 lipca 2008, 17:36
Podziękował : 8
Otrzymał podziękowań: 2
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
    NieznanyNieznana

Re: Client/Server Socket "coś ala ServerSide 1.6"

Nowy postprzez wargo » wtorek, 22 lipca 2008, 20:28

Jesli chodzi o ban to zrób przechwytywani ip klienta i mały if (jesli chcesz domyślne nie ma problemu, jeśli później definowalne to moze być trudniejsze. Tak samo z prywatnymi.
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: Client/Server Socket "coś ala ServerSide 1.6"

Nowy postprzez Koziol » środa, 23 lipca 2008, 09:44

hmmmm... czyli nie bedzie to proste?

Wiem że można porbrać numer socket'u ale nie wiem czy to coś gdzieś pomoże... :/
Avatar użytkownika
Koziol
Intelektryk
Intelektryk
 
Posty: 144
Dołączył(a): niedziela, 13 lipca 2008, 17:36
Podziękował : 8
Otrzymał podziękowań: 2
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
    NieznanyNieznana

Re: Client/Server Socket "coś ala ServerSide 1.6"

Nowy postprzez Cyfrowy Baron » środa, 23 lipca 2008, 10:05

Jedyny logiczny i skuteczny sposób to ten opisany przez wargo.
Klient loguje się do serwera, serwer identyfikuje go na podstawie adresu IP, tworzy log w którym przypisuje login i hasło do IP użytkownika. Potem sprawdza, czy login i hasło się zgadzają i czy dany Login nie jest zbanowany jeżeli jest zbanowany to odrzuca IP, czyli nie podłącza danego IP. Dla serwera istotne są Login i Hasło dlatego musi je przechowywać, nie może identyfikować użytkownika na podstawie IP, gdyż IP może być zmienne i inne przy każdej próbie logowania.

Mechanizm jest taki: klient wysyła do serwera prośbę o podłączenie, wysyła mu swoje IP oraz Login i Hasło, serwer rejestruje IP + Login + Hałso, sprawdza w bazie danych czy taki Login istnieje i czy Hasło do niego pasuje, jeżeli tak, sprawdza na liście Banów, czy Login tam się znajduje, jeżeli TAK odrzuca IP i nie pozwala się podłączyć, jeżeli NIE podłącza IP.

Proste!
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4730
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Client/Server Socket "coś ala ServerSide 1.6"

Nowy postprzez Koziol » środa, 23 lipca 2008, 10:44

wygląda w miare prosto.

a w jaki sposob mozna rozwiazac te prywatne wiadomości? Właśnie do tego myślałem że numer socketu sie przydaje.
Avatar użytkownika
Koziol
Intelektryk
Intelektryk
 
Posty: 144
Dołączył(a): niedziela, 13 lipca 2008, 17:36
Podziękował : 8
Otrzymał podziękowań: 2
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
    NieznanyNieznana

Re: Client/Server Socket "coś ala ServerSide 1.6"

Nowy postprzez wargo » środa, 23 lipca 2008, 10:47

Zrobić tak samo jak główne tylko że właśnie z tym numerem i dodatkowymi buttonami ;)
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: Client/Server Socket "coś ala ServerSide 1.6"

Nowy postprzez Koziol » środa, 23 lipca 2008, 10:48

Wydaje mi się że nie jest to takie proste :P

Przymierzałem sie do tego już kilka razy i nie dałem rady ;P
Avatar użytkownika
Koziol
Intelektryk
Intelektryk
 
Posty: 144
Dołączył(a): niedziela, 13 lipca 2008, 17:36
Podziękował : 8
Otrzymał podziękowań: 2
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
    NieznanyNieznana

Re: Client/Server Socket "coś ala ServerSide 1.6"

Nowy postprzez Cyfrowy Baron » środa, 23 lipca 2008, 11:13

Prywatne wiadomości wysyłasz poprzez serwer, czyli:

Klient wysyła na serwer swój IP + Login + Hasło + treść wiadomości + Login osoby do której wiadomość ma trafić.
Serwer przejmuje treść wiadomości, potem sprawdza Login osoby do której wiadomość ma trafić, jeżeli login istnieje (jest podłączony) to sprawdza w swojej bazie danych jaki IP ma w danym momencie przypisany dany Login i wysyła wiadomość do tego IP. Wiadomości zawsze są wysyłane na wybrany IP poprzez porównanie z Loginem.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4730
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Client/Server Socket "coś ala ServerSide 1.6"

Nowy postprzez Koziol » środa, 23 lipca 2008, 11:22

A jakiej funkcji użyć w socketach żeby wysłać wiadomość pod podany numer ip? SendText czy SendBuf nigdzie nie przyjmuje jako argumentu numeru ip...
Avatar użytkownika
Koziol
Intelektryk
Intelektryk
 
Posty: 144
Dołączył(a): niedziela, 13 lipca 2008, 17:36
Podziękował : 8
Otrzymał podziękowań: 2
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
    NieznanyNieznana

Re: Client/Server Socket "coś ala ServerSide 1.6"

Nowy postprzez Cyfrowy Baron » środa, 23 lipca 2008, 12:06

Serwer pośredniczy w wysyłaniu wiadomości, czyli odbiera wiadomość od klienta 1 i przesyła go na numer IP klienta 2, tak jak to opisałem w kursie Prosty komunikator sieciowy.

Inny sposób Serwer rejestruje tylko IP i przesyła do rozmówcy, czyli Rozmówca_1 łączy się z serwerem Serwer rejestruje jego IP (Rozmówca_1=IP), Rozmówca_2 łączy się z serwerem, serwer rejestruje jego IP (Rozmówca_2=IP) wysyła do Rozmówca_1 IP Romówca_2, czyli 1 zna już IP 2 więc może mu wysyłać wiadomości bezpośrednio pod jego IP bez udziału serwera, tak samo postępuje z Rozmówc_2, gdy już obydwaj znają sowje IP mogą przesyłać sobie wiadomości bezpośrednio pod swoje IP. W tym rozwiązaniu serwer tylko pośredniczy w połączeniu komunikacji, obydwaj rozmówcy muszą działać w trybie klient-serwer i obydwaj muszą nawiązać między sobą połączenie w tych dwóch trybach.
Kluczem do przesyłania wiadomości jest IP klienta, któremu chcemy wysłać wiadomość.
Komunikator opisany w kursie właśnie tak działa, może być jednocześnie i klientem i serwerem.

Czego nie rozumiesz? Wiadomości są wysyłane przez funkcję SendText pod wybranego - podłączonego - klienta określonego przez funkcję Connections[numer_klienta_na liście]. Nic się tutaj samo nie zrobi, gdyż Sockety tylko przesyłają i odbierają komunikaty, niczego nie rejestrują, nie zapamiętują, nie rozróżniają. Cały mechanizm obsługujący musisz sam stworzyć i włączyć w niego sockety. Sockety tylko podłączają, odłączają, oczekują na komunikat, odbierają komunikat. To proste biblioteki, bez żadnych zaawansowanych funkcji, dlatego w nowszych wersjach BCB już ich nie ma. Ja używam BCB v. 10 i nie ma u mnie już socketów, zamiast nich są inne bardziej złożone, mniej uniwersalne, a przez to jest ich więcej.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4730
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Client/Server Socket "coś ala ServerSide 1.6"

Nowy postprzez Koziol » środa, 23 lipca 2008, 12:13

To wszystko co opisałeś już wiem ;) kurs o komunikatorze przerobiłem...

Sprawa jest nie co bardziej skomplikowana.

Przykładowo mam serwer + klient_1 do klient_10 i przykładowo klient_3 chce przesłać wiadomośc do klient_7 jak coś takiego zorganizować :P
Avatar użytkownika
Koziol
Intelektryk
Intelektryk
 
Posty: 144
Dołączył(a): niedziela, 13 lipca 2008, 17:36
Podziękował : 8
Otrzymał podziękowań: 2
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
    NieznanyNieznana

Re: Client/Server Socket "coś ala ServerSide 1.6"

Nowy postprzez Cyfrowy Baron » środa, 23 lipca 2008, 13:02

klinet_3 wysyła na serwer wiadomość + nazwę klinet_7, serwer sprawdza w swojej bazie danych jaki IP ma klinet_7 i przesyła wiadomość pod IP klient_7
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4730
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Client/Server Socket "coś ala ServerSide 1.6"

Nowy postprzez Koziol » środa, 23 lipca 2008, 13:06

Włąsnie w tym miejscu mam problem... Jak uzyskać to że on wyśle pod ten adres IP tę wiadomość. Z jakiej funkcji skorzystać bo w SendText nie ma możliwości wysłać wiadomości pod wskazany adres IP. i w tym miejsu zawsze stawałem i nie wiedziałem jak ruszyć dalej.
Avatar użytkownika
Koziol
Intelektryk
Intelektryk
 
Posty: 144
Dołączył(a): niedziela, 13 lipca 2008, 17:36
Podziękował : 8
Otrzymał podziękowań: 2
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
    NieznanyNieznana

Re: Client/Server Socket "coś ala ServerSide 1.6"

Nowy postprzez Cyfrowy Baron » środa, 23 lipca 2008, 13:09

Przed SendText jest Connections[numer_klienta_na_liście] i to ta lista gromadzi IP pod które wysyła wiadomość, trzeba więc sprawdzić które miejsce zajmuje na liście dane IP.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4730
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Client/Server Socket "coś ala ServerSide 1.6"

Nowy postprzez Koziol » środa, 23 lipca 2008, 13:21

a jest jakaś funkcja ktora to podaje?
przeszukując google nie udało mi się trafić na funkcję która to sprawdza.
Avatar użytkownika
Koziol
Intelektryk
Intelektryk
 
Posty: 144
Dołączył(a): niedziela, 13 lipca 2008, 17:36
Podziękował : 8
Otrzymał podziękowań: 2
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
    NieznanyNieznana

Następna strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje sieciowe

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość

cron