Chcę zrobić mały programik do przesyłania poleceń na inny komputer w dowolnej innej sieci.
Wszystkie przykłady komunikacji między dwoma komputerami wymagają podania IP i portu. Ale do innej sieci to przecież nie działa. Musiałbym podać jego zewnętrzne IP, jego wewnętrzne IP i port.
Te dane znam, bo moja aplikacja przy uruchomieniu zapisuje sobie do wspólnej bazy na serwerze swoje aktualne IP wewnętrzne i zewnętrzne
Ale nie wiem jak mam zrobić połączenie między nimi.
Możecie mi to wyjaśnić jak działają wszelkie komunikatory albo TeamViewer
- Rejestracja:prawie 7 lat
- Ostatnio:10 dni
- Postów:118
To jest raczej pytanie dotyczące sieci komputerowych, a nie samego Delphi.
Jeśli masz podane konkretne adresy i porty, to zasadniczo nie ma większego znaczenia, czy łączysz się lokalnie z kompem stojącym obok, czy z kimś z Australii (albo Austrii). Jeżeli umiesz się połączyć lokalnie, aplikacje się widzą i mogą ze sobą "gadać", to w ten sam sposób uzyskasz komunikację przez Internet.
Problemem jest coś innego - żebyś mógł się wbić na konkretny port lokalnego adresu IP, na routerze (lub innym ustrojstwie, przez które przechodzi ruch sieciowy) musisz mieć zrobione przekierowanie portów. Ale sam sobie tego w swoim programie nie zrobisz, to zadanie dla administratora danej sieci. Taka potrzeba odpada, jeśli dany komputer posiada bezpośrednio przydzielony adres zewnętrzny - ale jest to dość rzadkie zjawisko.
Odpowiadając na drugie pytanie, czyli jak działają programy typu TeamViewer: zwróć uwagę, że one do nawiązania połączenia nie łączą się ze sobą bezpośrednio, ale najpierw z serwerem TeamViewera. Dopiero potem, po "zapoznaniu" obu stron ze sobą przez wspomniany serwer, możliwa jest dalsza praca. Więc - analogicznie - musiałbyś mieć jakiś serwer lub inny punkt zaczepienia, z którym mogłyby się łączyć programy - klienci. Zwróć uwagę, że do poprawnego działania programu, serwer musi być cały czas dostępny, a jego adres niezmienny. Jakby teraz - w wyniku awarii, włamania albo zwyczajnie z powodu likwidacji firmy serwer TeamViewera został wyłączony, to raczej nikt nie byłby w stanie z tego programu korzystać.

- Rejestracja:około 9 lat
- Ostatnio:prawie 2 lata
- Postów:1039
Bez pomocy zewnętrznego serwera w publicznej sieci się nie obejdzie.
- Dla niektórych typów NAT można zestawić połączenie pomiędzy dwoma końcami w sieciach prywatnych.
- Jeżeli nie da się zestawić połączenia bezpośredniego przebijającego NAT, to trzeba przekierować ruch przez zewnętrzny serwer.
Ad 1.
https://tools.ietf.org/html/rfc5389
https://en.wikipedia.org/wiki/STUN
Ad 2.
https://tools.ietf.org/html/rfc5766
https://en.wikipedia.org/wiki/Traversal_Using_Relays_around_NAT
Oraz:
https://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment