Połaczenie dwóch komputerów poprzez socket bez otwartego portu

0

Chciałbym stworzyć dwie aplikacje które połączyły by się poprzez sieć. Problem w tym że obie aplikacje będą na komputerach z siecią z komórki. W związku z tym nie ma otwartych portów. Czy ktoś zna jak w delphi ustanowić połączenie p2p? Czy istnieje możliwość stworzenia serwera socket na stronie w php i połączenie dwóch klientów tak aby przesyłać wzajemnie dane?

Dzięki za wszelką pomoc

Pozdrawiam

0

skąd będzie ta sieć to nie ma żadnego znaczenia. Znaczenie ma czy ich IP będą publiczne czy nie i czy będą stałe (ew. wpisywane za każdym razem) czy nie. Jeśli odpowiedź na jedno lub drugie jest NIE to musisz mieć pośrednika do komunikacji. Może to być zwykły skrypt w PHP (odpytywany z delphi przez GET lub POST), serwer WebSerwice, serwer REST - to są połączenia jednokierunkowe, co oznacza że każdy klient musiałby odpytywać co jakiś czas czy jest coś dla niego. Z drugiej strony możesz się oprzeć o websocket (tu masz jakąś darmową implementacje ws dla delphi - nie sprawdzałem czy i jak działa) albo postawić swój serwer napisany w delphi na jakiejś "publicznej" maszynie

0

Wszystko się da w zależności co dokładnie potrzebujesz. Jeśli nie chcesz otwierać portu to możesz postawić sobie serwer, na którym aplikacje klienckie będą się logować (przyznany będzie im odpowiedni identyfikator). Następnie z komputera A wysyłasz paczkę danych do serwera z identyfikatorem odbiorcy (komputer B) natomiast na komputerze B sprawdzasz czy na serwerze jest paczka danych dla komputera B. Natomiast jak chcesz wysłać komunikat zwrotny to ... powtarzamy tą samą czynność tylko, że z drugiej strony. Takie rozwiązanie załatwia Ci problemy z dostępem za NAT'em, dynamicznymi adresami IP oraz otwieraniem portów. Jednak ma to też minusy bo serwer musi pracować cały czas i komunikacja nie będzie bezpośrednia między komputerami.

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