Strona 1 z 1
Tragicznie wolne łączenie klienta i serwera w sieci lokalnej

Napisane:
środa, 17 grudnia 2008, 23:47
przez jabu74 - ekspert
Cześć
W moich aplikacjach korzystam z TServerSocket oraz TClientSocket (aplikacje stworzone w C++Builder BDS 2006).Skompilowałem dwa programy do exe w sierpniu i sprawdzałem dobrze chodziły tzn. w sieci lokalnej łączyły się natychmiast. Odpalam wczoraj po dłuższej przerwie, a tu łączenie trwa ... ok 10s (nie przesadzam, a komputery oddalone są o ok 2-3m). Tyle samo trwa rozłączanie. Zainstalowałem niedawno na jednym z tych komputerów SP3 (xp) natomiast na drugim mam SP1 (vista) nie wiem czy to te dziadostwa mi tak nabruździły. Macie jakieś aplikacje skompilowane w c++builder lub delphi tego typu bym mógł je sprawdzić w mojej sieci ? Pobrałem z sieci aplikacje hercules setup utility i tam jest zaimplementowany klient TCP IP. Ten program jest napisany na 100% w jednym z tych dwu środowisk (najprawdopodobniej w delphi). Połączyłem się z moim serwerem natychmiast !!!
Specjalnie na piechotę stworzyłem dwie aplikacje klient oraz serwer uproszczone na maksa łączące się jedynie ze sobą i o zgrozo czas łączenia jest tak samo b. długi !!! Na tym samym komputerze wspomniane aplikacje łączą się ze sobą szybko. Takiego dziadostwa to bym się nigdy nie spodziewał ze strony Borlanda.
Co o tym sądzicie ? Macie możliwość sprawdzenia u siebie na takich samych konfiguracjach ? Nie wiem co jest grane !
Pozdrawiam
Re: Tragicznie wolne łączenie klienta i serwera w sieci lokalnej

Napisane:
czwartek, 18 grudnia 2008, 12:18
przez Cyfrowy Baron
Service Pack 3 dla Windows XP wprowadza nowe procedury bezpieczeństwa w komunikacji sieciowej, co wpływa na szybkość w komunikacji, w sieci lokalnej.
Re: Tragicznie wolne łączenie klienta i serwera w sieci lokalnej

Napisane:
czwartek, 18 grudnia 2008, 13:04
przez jabu74 - ekspert
1) aplikacja pobrana z internetu (wspomniany hercules) łączy się natychmiast z moim serwerem, a mój klient wręcz przeciwnie.
2) da się te mechanizmy jakoś wyłączyć by w sieci lokalnej też chodziło to szybko
Re: Tragicznie wolne łączenie klienta i serwera w sieci lokalnej

Napisane:
niedziela, 21 grudnia 2008, 16:40
przez jabu74 - ekspert
Witam
Mam ! Najprawdopodobniej znalazłem powód tak fatalnego działania mojej aplikacji. Wydaje mi się, że to drastyczne zamrożenie aplikacji następuje w momencie odczytywania przez klienta nazwy zdalnego hosta, na którym uruchomiona jest aplikacja serwera i odwrotnie czyli jak serwer odczytuje nazwę komputera na którym jest uruchomiony program klient. Co ciekawe aż tak dużego spowolnienia nie ma przy uruchamianiu obydwu aplikacji na tym samym komputerze.
Tak więc na chwilę obecną usunąłem z klienta i serwera wszystkie fragmenty kodu gdzie było RemoteHost. Z pobraniem nazwy hostów będę musiał sobie jakoś inaczej poradzić. Odinstalowanie SP3 xp i SP1 vista nie pomogło. Na razie zainstalowałem na powrót SP3. Bez wspomnianego RemoteHost chodzi b. dobrze.
TServerSocket i TClientSocket to są dość stare komponenty i może się gryzą z ostatnio wprowadzonymi pseudo zmianami (na gorsze) przez microsyf. Chodziło dobrze jeszcze kilka miesięcy temu bo wielokrotnie sprawdzałem. Tylko muszę sprawdzić czy problem leży po stronie visty czy xp albo może po obydwu i ciekawy jestem, który to patch microsyfowy.
Pozdrawiam
Re: Tragicznie wolne łączenie klienta i serwera w sieci lokalnej

Napisane:
poniedziałek, 22 grudnia 2008, 22:27
przez jabu74 - ekspert
Cześć
Skonfigurowałem (wydaje mi się, że dobrze) modem DSL-524T (opcja Virtual Server - przekierowanie portów) tak bym mógł łączyć się z Internetu z moją aplikacją typu serwer uruchomioną w domowej sieci lokalnej.
Program typu serwer bazuje na TServerSocket a program klienta na TClientSocket i nic. Program serwer uruchomiony mam na komputerze o lokalnym adresie 192.168.1.4 natomiast program klienta uruchomiony na komputerze 192.168.1.2. Podaje adres IP taki pod jakim widziany jestem z zewnątrz tzn. z neta.
Przy próbie połączenia wyskakuje mi błąd socket error 10061 !! Nie mogę się połączyć , nie ma szans !
Co jest grane ? Czy ktoś mi może pomóc ?
Pozdrawiam
Re: Tragicznie wolne łączenie klienta i serwera w sieci lokalnej

Napisane:
środa, 24 grudnia 2008, 10:35
przez polymorphism
No a jak podajesz lokalny adres serwera, to łączy się, czy nie?
Re: Tragicznie wolne łączenie klienta i serwera w sieci lokalnej

Napisane:
środa, 24 grudnia 2008, 10:48
przez Cyfrowy Baron
192.168.*.* to adresy wewnętrzne połączenia lokalnego. Jeżeli łączysz klienta z serwerem nie poprzez sieć lokalną, lecz przez internet, to musisz znać adres zewnętrzny serwera i klient musi łączyć się przez adres zewnętrzny. Twój adres zewnętrzny ostatniego logowania na forum to: 83.29.133.143
Masz prawdopodobnie zmienny IP zewnętrzny, więc dostawca sieci przydziela Tobie przy każdym łączeniu z internetem inny adres IP.
W serwisie Cyfrowy
Baron w dziale
kursy praktyczne znajduje się przykładowy program typu klient-serwer
Komunikator sieciowy oparty na socketach. Testowałem go i zawsze przy łączeniu przez internet podawałem zewnętrzny IP.
Re: Tragicznie wolne łączenie klienta i serwera w sieci lokalnej

Napisane:
piątek, 2 stycznia 2009, 21:54
przez jabu74 - ekspert
Cześć
@polymorphism
Jak podaje lokalny adres serwera to się łącze bez problemu.
@Cyfrowy Baron
Wiem, że muszę podawać adres zewnętrzny i że jest on zmienny. Adres wpisuje prawidłowo, ale nie mogę się połączyć klientem do serwera z sieci lokalnej wpisując adres zewnętrzny.
Pozdrawiam
Re: Tragicznie wolne łączenie klienta i serwera w sieci lokalnej

Napisane:
piątek, 2 stycznia 2009, 22:20
przez Cyfrowy Baron
Wiem, że muszę podawać adres zewnętrzny i że jest on zmienny. Adres wpisuje prawidłowo, ale nie mogę się połączyć klientem do serwera z sieci lokalnej wpisując adres zewnętrzny.
Jeżeli komputer w sieci lokalnej ma połączenie z Internetem, to nie powinieneś mieć żadnych problemów z połączeniem się z serwerem poprzez internet - zakładając, że serwer nie działa w sieci lokalnej, lecz w Internecie.
Jeżeli serwer działa tylko w sieci lokalnej, to żeby się z nim połączyć podajesz oczywiście jego adres lokalny.
Jeżeli w sieci lokalnej masz np. dwa komputery połączone w sieć korzystające z jednego łącza internetowego i serwer pracuje na jednym z tych komputerów, to chyba (pewien nie jestem, nie sprawdzałem) możesz łączyć
tylko przez adres lokalny.