Skocz do zawartości

39DLL polaczenie


pabluuz

Rekomendowane odpowiedzi

Witam ponownie drodzy forumowicze. Pytanie zostało zadane już na forum dla początkujących, aczkolwiek wygląda na to, że nie jest to taki początkujący problem :) Postanowiłem to przenieść do forum dla zaawansowanych, więc edytowałem ostatniego posta i dopisałem requesta o przeniesieniu, jednakże widać, że administracja była zajęta, lub przeoczyła to. W każdym bądź razie, nie ma problemu, rozumiem ich, też są ludźmi przecież, więc sam to przeniosłem :)

 

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

 

I sprawa wygląda tak. adres_servera to constant, definiuje ją z global game settings.

Gdy postawie server i na tym samym komputerze do niego joinnam, to w adres_servera wstawiam 127.0.0.1 i jest spoko, da sie dołączyć, lecz gdy postawie server u kolegi i ja chce dolaczyc (ofc w adres_servera wklepuje jego IP) to tcpconnect() zwraca false, sprawa wyglada tak samo gdy próbowałem vice-versa, próbowałem też z innymi kolegami się połączyć, lub żeby koledzy łączyli się do siebie nawzajem i też nie daje rady (także nie jest to problem z siecią).

Dodam tez że nie jest to wina port forwardingu, ani niczego co jest związane z moją siecia ( dowód - http://gmc.yoyogames.com/index.php?showtopic=447384)

 

Proszę o pomoc, nie mogę dać sobie sam z tym rady.

Odnośnik do komentarza
Udostępnij na innych stronach

edytowałem ostatniego posta i dopisałem requesta o przeniesieniu, jednakże widać, że administracja była zajęta, lub przeoczyła to

zawsze mozna tez zaraportowac o to, nie karamy przeciez za kazdy raport ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Powiem to tak:

 

GML
listen = tcplisten(7921, 50, true);

GML
server=tcpconnect(adres_servera, 80, 0);

 

Zagadka - dla czego porty są różne ?

 

Widzisz! Błąd był taki oczywisty! Zaraz sprawdze :) i dam edita

---

Edit: Nie nie nie :) to tylko chwilowo bylo jak sprawdzalem czy moge laczyc sie z serverami HTTP :) na tych samych portach (7921) tez nie daje rady sie polaczyc.

Odnośnik do komentarza
Udostępnij na innych stronach

Tak, ale sprawę udało się rozwiązać :) Problem był taki, że "adres_servera" był constans, a tcpconnect(adres_servera, 80, 0); wymaga tego argumentu jako stringa, a ja głupi w tabeli const. wpisałem poprostu 192.168.0.1 zamiast "192.168.0.1". Więc informacja dla przyszłych pokoleń: funkcja tcpconnect potrzebuje STRINGA jako pierwszy argument.

 

Dzięki za pomoc wam wszystkim :*. Będę tu zaglądał co jakiś czas, może uda mi się odwdzięczyć.

Temat poproszę zamknąć.

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