Sockety ip wewnętrzne i zawnętrzne

0

Witam,

Ostatnio napisałem program sieciowy działający na socketach. Wszystko działa wewnątrz LANu lub między dwoma 2 komputerami z zewnętrznym IP. Chciałbym ten program poprawić tak, aby działał również miedzy komputerami NIEposiadającymi zewnętrznego IP. Istnieje taka możliwość? Jak to zrobić?

Pozdrawiam

0

Nie da się. Przynajmniej jeden musi mieć "zewnętrzne" IP. Rozwiązaniem jest serwer, który będzie robił za pośrednika. Skype dla przykładu, do przesyłania rozmowy głosowej pomiędzy użytkownikami używa komputerów innych osób, które są zalogowane do Skype i mają zewnętrzne IP :P

0

Przekierowanie portów w routerze

0
hubert_nnn napisał(a)

Przekierowanie portów w routerze

Czy da się to zrobić z poziomu tego programu, czy trzeba coś mieszać ręcznie w routerze?

Pozdrawiam

0

Da sie. Twoj program musi zmieniac konfiguracje routera, ustawiajac przekierowanie portu.

0

Tu jest bardzo uproszczony kod dla klienta lub serwera. Może mi ktoś pomóc go przerobić tak, aby router przekierował adres ip na wewnętrzny?

int Port;
IPAddress IP;

TcpClient client;
TcpListener listener;
BinaryReader reader;
BinaryWriter writer;

// 1 - dla klienta
{
client = new TcpClient();
IPEndPoint ipendp = new IPEndPoint(IP, Port);
client.Connect(ipendp);
}

// 2 dla serwera
{
listener = new TcpListener(Port);
listener.Start();
while (!listener.Pending());
client = listener.AcceptTcpClient();
}

NetworkStream stream = client.GetStream();
reader = new BinaryReader(stream);
writer = new BinaryWriter(stream);
string wiadomosc = reader.ReadString();
writer.Write(wiadomosc);

Pozdrawiam

0

Może mi ktoś pomóc go przerobić tak, aby router przekierował adres ip na wewnętrzny?

Nie. Musisz zgłosić się do producenta twojego routera żeby udostępnił ci specyfikację protokołu komunikacji z urządzeniem lub sam go odgadnąć. Lub napisać nakładkę, która zaloguje się na stronę konfiguracyjną routera i zrobi to tak, jakbyś to ty się zalogował i wyklikał nowe ustawienia.

Pamiętaj, że twój program aby był uniwersalny musi obsługiwać wszystkie routery dostępne na rynku, a nie tylko twój. No i musi też uwzględniać fakt, że dostęp do konfiguracji routera jest zabezpieczony hasłem (więc program musi łamać hasła). A jeżeli u dostawcy jest serwer zamiast routera, to twój program musi włamywać się na serwer i ustawiać na nim przekierowanie portów.

0

Kolega pytał czy się da - ano da się tak jak napisałem ;P Upnp - słusznie, ale dostawca nie ma włączonej tej usługi na swoim serwerze/routerze (prawie na pewno nie ma) i nie chce przekierować portów za nic - no i dupa zbita

0

Fakt. W zasadzie upnp to jest ostatnia możliwość, z której można spróbwać skorzystać, jak to nie da rady to dupa i tyle. Albo jeden z komputerów ma zew. IP albo trzeba stawiać serwer z takowym.

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