Skocz do zawartości

jak sprawdzić własne IP w GMS


Rekomendowane odpowiedzi

GM:S nie posiada funkcjonalnosci pobrania IP kompa/urzadzenia, jednak dobrze pamietalem motyw z broadcastem UDP na androidzie i zrobilem analogicznie przyklad, ktory wykorzystuje takowy trick :)

https://dl.dropboxusercontent.com/u/9759049/CheckLocalIP.gmz

jesli zas chcesz uzyskac IP globalne, zastosuj podpowiedz od bacy.

dodam, ze polaczenie uzyskania IP lokalnego i globalnego pomoze w zrobieniu "UDP hole punching" w GM:S, czym sie moze sprobuje za jakis czas zajac ;)

Odnośnik do komentarza
Udostępnij na innych stronach

GM:S nie posiada funkcjonalnosci pobrania IP kompa/urzadzenia, jednak dobrze pamietalem motyw z broadcastem UDP na androidzie i zrobilem analogicznie przyklad, ktory wykorzystuje takowy trick :)

 

Fajny pomysł. Na pierwszy rzut oka powinien działać. Odpaliłem - nie zadziałało. OK - sprawdziłem porciki - zajęty. Zmieniłem port i zadziałało :rolleyes: , ale szczena mi opadła bo mój globalny IP to 83.23...., lokalny IP to 10.34...., a GMS pokazało ni z gruszki ni z pietruszki 169.254.188.19 :blink: . Poszukałem w kompie i okazało się, że jest to IP dla VirtualBoxa, który nawet nie był uruchomiony podczas testu!

 

Ciekawe jak GMS to wygmerał?

 

Z UDP hole punching może nie pójść tak łatwo :( .

Odnośnik do komentarza
Udostępnij na innych stronach

generalnie dzieki trickowi z broadcastem powinienes dostac tyle odpowiedzi z IP ile tych IP posiada Twoja maszyna, jednak w tym przykladzie jak zdobedzie pierwszy to dalej nie powinien kolejnych nadpisac. pogmeram z tym jeszcze.

Odnośnik do komentarza
Udostępnij na innych stronach

generalnie dzieki trickowi z broadcastem powinienes dostac tyle odpowiedzi z IP ile tych IP posiada Twoja maszyna, jednak w tym przykladzie jak zdobedzie pierwszy to dalej nie powinien kolejnych nadpisac. pogmeram z tym jeszcze.

 

Niestety broadcast robi tylko na jednej masce. Zmieniłem w następujący sposób:

 

w create event:

GML
_ip = ds_list_create();

 

 

w networking event:

GML
ds_list_add(_ip, ds_map_find_value( async_load, "ip" ));

//_ready = true;

//event_user( 0 );</span></span>

 

dodałem draw event:

GML
var i, ile_ip;

ile_ip = ds_list_size(_ip);

for(i=0; i<ile_ip; i++){

draw_text(16, i*16, ds_list_find_value(_ip, i));

}

 

User event - już niepotrzebny. Niestety jest tylko jeden wynik - IP VirtualBoxa. Obu moich kart sieciowych - nie widzi :( .

Trochę to dziwne bo jak puszczę ipconfig /all to mi pokazuje, że w chwili obecnej tylko karta wifi jest aktywna - tej karty lokalne IP powinien pokazywać.

Odnośnik do komentarza
Udostępnij na innych stronach

w takim razie zostaje wysylanie rzadan recznie na znane adresy broadcastowe. glupi GM narzuca limit do wylacznie jednej maski D:

Odnośnik do komentarza
Udostępnij na innych stronach

Myślałem, że znajdziesz błąd w mojej przeróbce i wszystko będzie pięknie...

 

Niestety to nie tylko problem z odnajdywaniem własnego IP. Jeśli którys z graczy ma zainstalowany VirtualBox to UDP broadcast w ogóle nie będzie mu działał - wszystko pójdzie w powietrze. Zostaje TCP.

 

A teraz ciekawostka: wywaliłem (tymczasowo) driverka od VirtualBoxa i zapuściłem Twój (zmodyfikowany) programik. I tu zdziwionko: pokazał, że mam dwie karty sieciowe - obie z identycznym adresem, co nie jest prawdą, bo ich IP różnią sie ostatnią cyfrą. Nie mniej bez VirtualBoxa gra, która piszę może mi zadziała.

Odnośnik do komentarza
Udostępnij na innych stronach

broadcast zapuszcza na kazde IP, wiec to kazde IP powinno odpowiedziec za siebie, nie za jakies inne - w ogole GMowy broadcast dziala jakos inaczej niz powinno, albo cos z Twoja siecia jest nie tak. nawet na smartfonie mi to natywnie dzialalo jak czeba D:

Odnośnik do komentarza
Udostępnij na innych stronach

ja bym zrobil mimo wszystko tak, ze kazde IP lokalne, jakie otrzymam, probuje na osobnych watkach puscic UDP hole punching i w ten sposob dobrac sie do IP, ktore z sukcesem polaczy sie z serwerem globalnym.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...