Skocz do zawartości

39dll polaczenie


pabluuz

Rekomendowane odpowiedzi

Witam ponownie drodzy forumowicze.

 

Po pierwsze chciałbym wam podziękować za ostatnią pomoc przy "with", od tamtego czasu prace idą mi coraz lepiej, lecz prędzej czy później musiałem natknąć się na kolejny problem.

 

Tym razem chodzi o komunikacje za pomocą 39dll, najpierw pokaże wam jak to wygląda u mnie

 

 

Kod z klienta

 

Event w create

GML
dllinit('connection.dll', true, false);//inicjalizacja DLLa

server=tcpconnect(adres_servera, 80, 0);//inicjalizacja polaczenia TCP

ip = tcpip(server);//pobieram ip z servera :) potem mi sie to przyda, zeby sie do priv serverow nikt nie laczyl</span></span></span></span></span></span>

 

Event po wpisaniu nazwy konta i wcisnieciu enter

GML
if(server <= 0)

{

show_message( "Nie mozna sie polaczyc" );

game_restart();

}

else

{

clearbuffer();

writebyte(0);

writestring(DATA.name);

writestring(DATA.pass);

sendmessage(global.server);

 

room_goto_next();

}

 

 

A teraz kod z servera

 

on Create

 

GML
dllinit(0, true, true);

listen = tcplisten(7921, 50, true); //nasłuchiwanie

if(listen <= 0) //jeśli nie udaje się nasluchiwac

{

global.z_g_tcpipstatus=0;

//show_message("Failed to listen on port 14804"); //pokaż wiadomość

//game_end(); //zakończ grę

}

else

{

global.z_g_tcpipstatus=1;

}

 

on Step

GML
client = tcpaccept(listen, true);

if(client <= 0) exit;

z_l_ilegraczy = z_l_ilegraczy + 1;

 

 

 

tid_gracza=instance_create(5,5,player);

tabelagraczy[z_l_ilegraczy,0]=client; //link do jego socketu

tabelagraczy[z_l_ilegraczy,1]=tid_gracza; // link do ID instancji gracza

tid_gracza.client=client;

tid_gracza.index=z_l_ilegraczy;

tid_gracza.tid_gracza=tid_gracza; // zeby widzial jak go serwer widzi

exit;

 

potem server porozumiewa sie co stepa z instancja obiektu player..

 

No i jak hostuje to na localhoscie, i lacze sie tez z localhosta, to wszystko jest spoko, natomiast gdy dam koledze zahostowac, to sprawa wyglada tak ze w kliencie zmienna server = -1 i nie daje rady sie polaczyc.. sprawdzalem juz firewalle, zdognosc portow.. wszystko jest spoko, dodatkowo probowalem laczyc sie z ip googli przez port 80, tak samo nie moze nawiazac polaczenia. Mozna prosic o jakieś wskazówki?

Przed napisaniem czegokolwiek, proszę zapoznać się DOKŁADNIE z treścią mojego posta

To nie jest wina port Forwardingu

-----

Oto topologia mojej sieci, wraz z próbami hostowania/joinania

topology.png

*|HOST|JOIN|Wynik

-----------------------

1|...1...|...4...| 0 //połączenie z poza sieci nieudane

2|...1...|...2...| 0 //połączenie z sieci lokalnej nieudane

3|...2...|...2...| 1 //połączenie na localhoscie udane

4|...4...|...2...| 0 //połaczenie do komputera z poza sieci nieudane

5|...4...|...4...| 1 //połączenie komputera z poza sieci do siebie samego udane

5|...4...|...1...| 0 //połaczenie z servera(nie używając sieci lokalnej) do komputera z poza sieci nieudane

 

Oto dowód, że nie jest to wina port forwarda.. więc proszę nie zwalać na to winy -.-

Odnośnik do komentarza
Udostępnij na innych stronach

jakto nie mam zewnętrznego IP ? jak można nie mieć zewnętrznego IP!?

 

ip lokalne mam 192.168.0.xx, natomiast globalne to 83.24.xx.xx , jak domniemam zewnętrzne = globalne :) tylko teraz mi powiedz jeszcze, czy to połączenie mam jakoś forwardować przez server na 192.168.0.1 ? to kod z klienta, więc nie chciałbym, żeby 2 graczy chcących sobie pograć po multi musiało forwardować port dla klienta, bo z tego co wiem, to server musiał zawsze forwardować porty, nie klient. ale proszę powiedz mi o tym conieco, bo z tego co widzę robisz jakiegoś mmorpg, więc masz o tym wiedzę :)

Odnośnik do komentarza
Udostępnij na innych stronach

rozumiem, więc co mogę z tym zrobić? jeśli klient będzie miał komputer który łączy się z netem przez router lub przez server to nie pogra sobie? w takim razie jak rozwiązali to w innych grach? np w W3 albo w twojej almorze ? napewno istnieje jakieś rozwiązanie :)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Serwer musi być bezpośrednio w sieci. Jeżeli jest to Neostrada / UPC podłączone pod router, na routerze wystarczy dać strefę DMZ na Twój komp, lub forwarding portów gry. Jeżeli to sieć osiedlowa - no to już nic nie zrobisz.

Klient - nie musi.

Odnośnik do komentarza
Udostępnij na innych stronach

server jest postawiony chwilowo u kolegi ktory nie ma sieci lokalnej i ma jedynie modemik neostrady! ja jako klient mam router. gdyby to był taki prosty problem, dawno bym już to rozwiązał :) ten kod działa gdy pod stała adres_servera dam 127.0.0.1 i odpale server u siebie, a gdy dam pod zmienna ip kolegi (83.24.xx.xx) i on postawi, to nie da rady sie polaczyc

 

--

Prośba do administracji: Proszę o przeniesienie tematu do pytań dla zaawansowanych. Z góry dziękuje :)

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ę...