P2P - jak połączyć dwa komputery za natem przez serwer?

0

Witam.
Potrzebuje połączyć dwa komputery za natem lub nie bezpośrednio P2P.
Oba łączą się z serwerem (trzeci komputer z publicznym IP) za pomocą http i pytają o IP drugiego clienta.
Otrzymują odpowiedź i łączą się same ze sobą za pomocą TCP.

Jak to zrobić?
Czy w Delphi da się połączyć P2P za natem dwa komputery za pomocą ICS czy INDY?

Czy na serwerze (dedykowanym) wystarczy jak napisze coś w php czy trzeba cos doinstalować?

Przykład:
pierwszy komp ma ip 192.168.1.100 i jest podłączony do rutera z publicznym IP który znam.
drugi komp jak ma wysłać informacje znając jedno i drugie IP po drodze aby się z nim połączyć?

Dzięki za wszelkie info lub jakieś strony gdzie mógłbym się douczyć.

0

nigdzie nie da się połączyć dwóch komputerów p2p, które są za natem i nie zależy to ani od języka programowania ani od systemu operacyjnego. Poczytaj o przekierowaniu portów

0

nie znam się dlatego pytam, ale wydaje mi się że sieci torrent nie mają z tym problemu i dwie osoby za natem + każdy z ruterem wifi czy innym bez problemów się łączą...
mało kto teraz ma publiczneIP...

0

jak się nie znasz to zacznij od poczytania o podstawach. A sieci p2p najpierw łączą się z publicznym serwerem, który to dopiero "zestawia" połączenie p2p między klientami

0
Arczibalek napisał(a):

Oba łączą się z serwerem (trzeci komputer z publicznym IP) za pomocą http i pytają o IP drugiego clienta.
Otrzymują odpowiedź i łączą się same ze sobą za pomocą TCP.

no napisałem przecież że wiem że serwer (trzeci komp) pośredniczy w wymianie IP klientów...

0

no a ja napisałem, że to ten publiczny serwer zestawia im połączenie. Widzisz różnicę? Adresy IP możesz nawet mieć wpisane na stałe ale bez publicznego serwera to nic nie da. Masz i czytaj https://www.google.pl/search?q=udp+p2p+nat

0

ale właśnie o to mi chodzi! chce aby publiczny zestawił połączenie!

client 1 pyta publicznego o adres client2
client 2 pyta publicznego o adres client1

client 1 łączy się z client2 bo wie od publicznego jakie są ich adresy

ale jak to zrobić w delphi?

co publiczny serwer ma podać komponentowi Indy czy ICS aby ten wiedział jak połączyć się z innym klientem?

prosty przykład:
jeżeli mam stałe IP rutera np. 215.100.200.1 i w nim wiem że client1 ma IP 192.168.1.100 to jak mam się z nim połączyć?
stawiam TCPServer i jego IP jest 192.168.1.100?

na client2 chce się teraz z nim połączyć ale jak wpisze 215.100.200.1 to łącze się z ruterem...

0

Nie rozumiesz. Nie da się zrobić tak jak ty chcesz. serwer zarządza połączeniem. Wszystkie dane między klientami za natem przechodzą przez serwer. Hmmm jak by Ci to wytłumaczyć.

Wysyłasz list. Mimo ze znasz adres to list i tak wysyłasz przez pocztę (serwer). Bo znasz adres mieszkania (nat) a nie kolegi (klient 2)

0

@babubabu to co piszesz nie do końca jest prawdą. Tak działa TCP i tego nie przeskoczysz ale UDP potrafi połączyć dwa kompy w przypadku, gdy oba są za natem. Jednak połączenie MUSI być zainicjowane przy użyciu trzeciego kompa, który ma publiczny IP (przekierowane porty). I ta inicjacja nie polega na "pobraniu adresów IP". Aby to "uruchomić" najpierw trzeba zrozumieć jak to działa a tego pytacz najwyraźniej nie chce albo nie potrafi

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