Skocz do zawartości
Masz już aplikację Sharegon?

Odkryj wszystkie możliwości. Dowiedz się więcej

Sharegon.pl

Zainstaluj aplikację Sharegon i korzystaj z powiadomień push oraz licznika nowych aktywności bezpośrednio z ekranu głównego.

Aby zainstalować tę aplikację na iOS i iPadOS.
  1. Tap the Share icon in Safari
  2. Przewiń menu i stuknij Dodaj do ekranu początkowego.
  3. Stuknij Dodaj w prawym górnym rogu.
Zainstaluj aplikację Sharegon na Androidzie
  1. Otwórz Sklep Google Play na swoim smarfonie.
  2. Wyszukaj „Sharegon” w pasku wyszukiwania.
  3. Stuknij „Zainstaluj”, aby pobrać aplikację.

Featured Replies

Opublikowano
  • Ta odpowiedź cieszy się zainteresowaniem.

Zawartość tematu może kiedyś powróci.

Edytowane przez KoYGeR

Opublikowano
  • Autor
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

Dzięki bardzo, przyda się ❤️

  • 2 tygodnie później...
  • 2 tygodnie później...
  • 2 tygodnie później...
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
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.

  • 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"

  • Sevence odpiął/ęła ten temat

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

Skonfiguruj powiadomienia push w przeglądarce.

Chrome (Android)
  1. Stuknij ikonę kłódki obok paska adresu.
  2. Wybierz Uprawnienia → Powiadomienia.
  3. Dostosuj swoje preferencje.
Chrome (Desktop)
  1. Kliknij ikonę kłódki na pasku adresu.
  2. Wybierz Ustawienia witryny.
  3. Znajdź Powiadomienia i dostosuj swoje preferencje.