Skocz do zawartości

Featured Replies

Opublikowano
  • Autor
  • Programista
1 minutę temu, Delta napisał(a):

@KoYGeR bardzo doceniam za taki poradnik, duży props 😄

To dopiero pierwsza część poradnika. Postaram się z każdym dniem wrzucać kolejne typy pakietów

Opublikowano

No nic zobaczmy 😀

Opublikowano

Git

Opublikowano

image.png.79474435942a0c5aac081bf5671fb123.png

Opublikowano

A co tu mamy 

* I tak nie będę wiedział o co chodzi * 

Dzięki xd

Opublikowano

Dzięki bardzo, przyda się ❤️

Opublikowano

taktyczna kropka obserwacji tematu

  • 2 tygodnie później...
Opublikowano

Planujesz aktualizację o kolejne typy pakietów? 

  • 2 tygodnie później...
Opublikowano

Bardzo przydatne, dzięki 

  • 2 tygodnie później...
Opublikowano

dzięki

Opublikowano

Świetna robota i prościej chyba nie da się tego wytłumaczyć. 

Dziękujemy 🙂

Opublikowano

Dzięki za poradnik 🙂

Opublikowano

@KoYGeR W Twoim poradniku znalazłem poważny problem dotyczący obsługi pakietów.

 

W funkcji SendSharegonTestPacket używasz SendSequence() co oznacza, że klient wysyła pakiety sekwencyjne:

bool CPythonNetworkStream::SendSharegonTestPacket(int value)
{
	TSharegonTestPacketCG packet;	// deklarowanie struktury naszego pakietu
	packet.header = HEADER_CG_SHAREGON_TEST_PACKET;		// nadawanie nagłówka
	packet.value = value;		// przypisywanie wartości wysyłanej do serwera

	if (!Send(sizeof(packet), &packet)) // wysyłanie pakietu, jako parametry funkcji podajemy rozmiar naszego pakietu oraz wskaźnik do pamięci, gdzie trzymane są dane naszego pakietu
	{
		TraceError("Z jakiegos powodu nie udalo sie wyslac pakietu!");
		return false;
	}

	return SendSequence();	// to można zastąpić zwykłym 'return true;' lub nawet całą funkcję przerobić na void, ale zachowajmy styl developerów metina :D
}

 

Natomiast po stronie serwera ustawiłeś obsługę tego pakietu jako false:

Set(HEADER_CG_SHAREGON_TEST_PACKET, sizeof(TSharegonTestPacketCG), "SharegonTestPacket", false);

 

Gdy serwer nie oczekuje sekwencji, a klient ją wysyła, serwer może niepoprawnie przetworzyć pakiet, co prowadzi do błędów takich jak "unknown packet header".

Dzieje się tak, ponieważ serwer nie wie, że w buforze jest jeszcze jeden bajt sekwencji, co powoduje niezgodności w przetwarzaniu danych.

 

Jeśli chcesz poprawnie przetwarzać pakiet musisz zsynchronizować konfigurację pakietów po obu stronach. Jeśli klient wysyła sequence to serwer musi być przygotowany do odbioru, czyli ustawiasz na true. 

Set(HEADER_CG_SHAREGON_TEST_PACKET, sizeof(TSharegonTestPacketCG), "SharegonTestPacket", true);
Opublikowano
  • Autor
  • Programista
7 godzin temu, Sevence napisał(a):

@KoYGeR W Twoim poradniku znalazłem poważny problem dotyczący obsługi pakietów.

 

W funkcji SendSharegonTestPacket używasz SendSequence() co oznacza, że klient wysyła pakiety sekwencyjne:

🔐 Ukryta Treść 🔐

  • 🔑 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę! 👍
    💖 W ten sposób okazujemy wsparcie i doceniamy wkład każdego członka naszej społeczności. 🌸

 

Natomiast po stronie serwera ustawiłeś obsługę tego pakietu jako false:

🔐 Ukryta Treść 🔐

  • 🔑 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę! 👍
    💖 W ten sposób okazujemy wsparcie i doceniamy wkład każdego członka naszej społeczności. 🌸

 

Gdy serwer nie oczekuje sekwencji, a klient ją wysyła, serwer może niepoprawnie przetworzyć pakiet, co prowadzi do błędów takich jak "unknown packet header".

Dzieje się tak, ponieważ serwer nie wie, że w buforze jest jeszcze jeden bajt sekwencji, co powoduje niezgodności w przetwarzaniu danych.

 

Jeśli chcesz poprawnie przetwarzać pakiet musisz zsynchronizować konfigurację pakietów po obu stronach. Jeśli klient wysyła sequence to serwer musi być przygotowany do odbioru, czyli ustawiasz na true. 

🔐 Ukryta Treść 🔐

  • 🔑 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę! 👍
    💖 W ten sposób okazujemy wsparcie i doceniamy wkład każdego członka naszej społeczności. 🌸

To nie ma większego znaczenia, zwróć uwagę na metodę SendSequence (zwraca zawsze true, no chyba, że masz dyrektywę, która odpowiada za to). Zachowałem po prostu "styl" developerów tej pięknej gry o czym wspomniałem w komentarzu.

Opublikowano

to bylo do przewidzenia, że aktualizacji nie zobaczymy

  • 4 miesiące temu...
Opublikowano

Spoko rozpiska, każdy kto zabiera się za dev-a metina powinien wiedzieć jak to wygląda. Ponad 10 lat temu bez source to do komunikacji używało się cmdchatów, wtedy było ciekawie xD Skoro już wiemy jak posługiwać się pakietami to może teraz coś w stylu jak radzić sobie w przypadku wystąpienia właśnie legendarnego już syserra "unknown packet header"

Gość
Dodaj odpowiedź do tematu...