Skocz do zawartości

Zagadka dla pro!


gmysu

Rekomendowane odpowiedzi

Mam serwer i klienta, napisane zgodnie z biblią, koranem i tutorialami tutaj + oficjalną stroną wiki. I problem jest taki - serwer reaguje na połączenie klienta tylko po "odświeżeniu" klienta w trybie debugowania, do tego nie bardzo daje radę z odczytywaniem zmieniającej się pozycji obiektu (w step). why? doklejam mój kod.

 

Wersja GM - 8.0, windows 7 ultimate. Testuję obie aplikacje na localhoście.

 

W create serwera:

GML
dllinit(0, true, false);

 

status = 0;

 

listen = tcplisten(14804, 50, 1);

if(listen <= 0) //jeśli nie udaje się połączyć

{

show_message("Failed to listen on port 14804");

game_end(); //zakończ grę

}

 

w step serwera

GML
client = tcpaccept(listen, 1);

if(client <= 0) exit;

global.otherplayer = client;

 

var size;

while(true)

{

size = receivemessage(global.otherplayer);

if(size < 0) break;

if(size == 0)

{

show_message("The other player left the game");

game_end();

}

 

messageid = readbyte();

switch(messageid)

{

case 0:

x = readshort();

y = readshort();

status = readshort();

break;

}

}

 

mam na serwerze jeszcze jeden obiekt którym odczytuje sobie wartości zmiennych i wyświetlam jako tekst, ale to nie ma znaczenia, na mur beton działa.

 

teraz klient:

 

w create

GML
dllinit(0, true, false);

 

status = 1;

 

server = tcpconnect("127.0.0.1", 14804, 2);

if(server <= 0)

{

show_message( "Unable to connect to server" )

game_end();

}

global.otherplayer = server;

 

step:

GML
if(keyboard_check(vk_left))

{

x = x + 4;

}

if(keyboard_check(vk_right))

{

x = x - 4;

}

 

clearbuffer();

writebyte(0);

writeshort(x);

writeshort(y);

writeshort(status);

sendmessage(global.otherplayer);

 

Dlaczego cała sytuacja jest dziwna? Klikam sobie refresh czy też restart w debug mode (klient), a w oknie serwera zapala się zielona lampka (zmienna status została przesłana z powodzeniem). Help me pl0x!

 

 

Radzę lepiej zapoznać się z regulaminem.. Nazwa tematu powinna nawiązywać do treści opisywanego problemu, "zakaz nazywania tematów zbyt ogólnikowo (np. "pomoc", "poszukuję", "mam problem", "komputer" itd.),". Z powodu, że jesteś jeszcze młody na forum potraktuje Cię ulgowy - warna nie będzie :P

Pamiętaj o tym!

Marek.S

Odnośnik do komentarza
Udostępnij na innych stronach

Napisałem! W pierwszych 3 linijkach:}. Po prostu nie ma dialogu serwer - klient. Zapora wyłączona :o. A połączenie jest.

 

Edit: A teraz klient wykrywa serwer. Tyle że serwer nie widzi klienta (zmienna client = 0 w debug mode).

 

Edit: Pomogłem sobie sam. Przepisałem całość i działa od kopnięcia. Pozdrawiam!

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