Pisanie komunikatora - problem 1

0

Cześć, piszę komunikator internetowy na pracę magisterską. Komunikator ma działać mniej więcej jak GG. I na samym początku mam pewną zagwozdkę.

Otóż zakładam, że jest serwer główny, do którego łączą się klienci. Klient podłączając się do serwera wysyła mu o sobie informacje. Następnie, gdy wiadomość zostaje wysłana do kogoś, przechodzi ona najpierw przez serwer, a potem do odbiorcy. I tu mój problem. O ile wysłanie informacji na serwer nie stanowi problemu(ponieważ ma on stałe, zewnętrzne IP) o tyle wysłanie do klienta dla mnie stanowi. Ponieważ klient zakładam, że nie ma ani stałego, ani zewnętrznego IP...

Jak rozwiązać ten problem wysyłania wiadomości do klienta? Co mam poczytać?

Jeśli jest to ważne, to komunikator piszę w Delphi.

0

To sie odbywa tak:

Jest sobie serwer ze stalym IP lub domena

Masz 1000 klientow, kazdy ma inaczej przydzielane ip, jeden stale , drugi za natem a trzeci ma zmienne co pol godziny.

Stwierdzenie 1: Laczymy sie klientem do serwera, nigdy na odwrot, na serwerze gniazdo nasluchujace i jakas baza aktualnych polaczen, a po stronie klienta gniazdo "laczeniowe" (??!! :P)

Stwierdzenie 2: Laczymy sie z serwerem przez TCP/IP aby raz sie polaczyc i nie martwic sie o gubienie pakietow oraz logowanie (logujemy sie raz i sesja caly czas lanie idzie dalej), tylko trzeba to ladnie obslugiwac w programie serwera

Stwierdzenie 3: Trzeba ustalic jakas ramke dla wiadomosci i zapytan do serwera i jego odpowiedzi by serwer nie przepelnil bufora albo nie zwariowal :P tak samo klient :)

Jak cos wiecej to pytac :) moze nie gwarantuje 100% zgodnosci ze swiatem ale cos chyba tam wiem ;)

0

Nie potrzebujesz znać adresów IP klientów. Podczas nasłuchiwania na serwerze gdy zgłosi się klient to otrzymujesz gotowe gniazdo do klienta na które możesz juz nadawać nie przejmując się żadnymi adresami IP, wszystkim zajmuje się system operacyjny.

P.S. Radzę zapoznać się ze specyfikacją gniazd (przecież to podstawa jeśli zabierasz się za taki projekt) bo inaczej kiepsko widzę twoją magisterkę.

0
Gość napisał(a)

P.S. Radzę zapoznać się ze specyfikacją gniazd (przecież to podstawa jeśli zabierasz się za taki projekt) bo inaczej kiepsko widzę twoją magisterkę.

Wstępnie miałem plan posłużyć się komponentami INDY do komunikacji. Ale teraz nie wiem, czy lepiej robić bezpośrednio na gniazdach, czy za pośrednictwem INDY?

Lepiej w sensie - jak będzie lepiej działało :)

0

Najlepiej użyj komponentów ClientSocket i ServerSocket :)

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