Mam taki problem, ponieważ nigdy nie zajmowałem się aplikacjami sieciowymi, iżdnymi które mają z tym coś wspólnego. Dlatego zadaję taki łatwe dla Was pytanie jak wykryć czy komputer na którym uruchomiono jest klientem, serwerem, czy w ogólnie nie jest podłączony do sieci.
Żeby wykryć serwer trzeba grać w ping-ponga. Pingujesz porty na localhoscie... 127.0.0.1 (tak komputer w sieci rozpoznaje samego siebie- ip najniższe/najbliższe/najbardziej lokalne). Lub też pingujesz przez ip otrzymane z dhcp/ustawione na sztywno (obojętnie, ale przydzielone ip trzeba najpierw skądś odczytać... więcej roboty).
// co do wykrycia klienta... Hmmm chyba troszkę trudniej... Szczerze mówiąc nie wiem... Może hook na jakieś funkcje systemowe?
Jezeli piszesz na gniazdkach to aplikacja musi wlaczyc sie w tryb "oczekiwania" na przylaczenie. Np. Server.Active := True;
No i w tym momencie aplikacja jest serwerem; chyba ze nie zrozumialem ;-/
To ja nie zrozumiałem. O co w ogóle chodzi. Jak juz pisałem nie znam się na aplikacjach sieciowych. Wiem, że Wy za tym nie przepadacie, ale może jakiś kodziak i jaki to ma byc komponencik?
poczytaj sobie artykuł o gniazdkach.
w skrócie to wygląda tak:
jeden programik jest serwerem (komponent server), a reszta jest klientami (client).
oba programiki muszą być na tym samym porcie. ustalasz to tak:
server.port:=1450
client.port:=1450
poza tym ustalasz IP:
server.IP:='192.168.0.1', analogicznie klienta.
i żeby sę połączyć to:
server.listen:=true
client.connection:=true
jesli nastapi polaczenie to server otrzyma komunikat w zdarzeniu OnConnection, a u klienta tez takie zdarzenie nastąpi.
PS. wszystko napisałem na podstawie komponentów TCPServer i TCPClient (ze strony torry)
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.