Skocz do zawartości

Featured Replies

Opublikowano

image.png.a144663d4007d16872d3413c4a1a8bf3.png

 

Cześć wszystkim,

 

Przedstawiam przykładowe rozwiązanie dotyczące problemów z połączeniem serwera.

 

Po krótce, co to za błąd?

Problem ten pojawia się, gdy gracz próbuje nawiązać połączenie z serwerem, ale serwer nie odpowiada. W takiej sytuacji gracz otrzymuje komunikat "Zostaniesz połączony z serwerem", który wisi cały czas. Problem ten może również występować podczas teleportacji, w wyniku czego gracz zostaje zatrzymany i nie może dalej grać.

 

Rozwiązanie:

Wdrożymy specjalny mechanizm, który podczas problemów sieciowych z serwerem będzie nawiązywał kolejną próbę połączenia, co 1 sekundę. Takie rozwiązanie zostało już opublikowane na innym forum przez Kena i ma spore wady. Takie podejście, będzie generowało dodatkowe obciążenie sieci. Wdrożymy więc strategie nazywaną exponential backoff, która pozwoli na bardziej efektywne zarządzanie ponownymi próbami połączenia w przypadku błędów. W tej strategii, czas oczekiwania między kolejnymi próbami jest stopniowo zwiększany, co redukuje ryzyko nadmiernego obciążenia serwera. Użyłem tu również chrono do obsługi limitu czasu połączenia zamiast time(NULL), chrono umożliwia większą precyzję. 

 

 

Implementacja:

📂 Lokalizacja pliku: 'EterLib -> NetStream.cpp'

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

 

♻️ Zamień

🔐 Ukryta Treść 🔐

 

📂 Lokalizacja pliku: 'EterLib -> StdAfx.h'

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

 Dodaj:

🔐 Ukryta Treść 🔐

 

  • 2 tygodnie później...
  • 1 miesiąc temu...
  • 1 miesiąc temu...
  • 4 tygodnie później...

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