Różnica między otwieraniem socketu TCP i UDP

Różnica między otwieraniem socketu TCP i UDP
CO
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:4
0
Kopiuj
$socket = fsockopen("udp://$serwer",$port,$errno,$errstr,1);
if($socket == false){
echo "offline";
}
else{
echo "online";}
fclose($socket);

Witam, robię pracuje nad listą serwerów do gier, jestem noob w tych sprawach a wszystko robię by się uczyć. Czy mógłby mi ktoś z was wyjaśnić czemu ten kod powyżej zawsze daje wynik "online"? Przy TCP jest wszystko ok, ale UDP zawsze działa. Nawet jak podam niepoprawne IP np. 192.305.1:543567

edytowany 1x, ostatnio: Corypto
KR
  • Rejestracja:prawie 16 lat
  • Ostatnio:6 miesięcy
  • Postów:2514
0

░█░█░█░█░█░█░█░█░█░█░█░
0

ale UDP zawsze działa.

W UDP nie ma pojęcia połączenia. Poczytaj na googlach.

CO
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:4
0

Ehhh tak myślałem, ale sądziłem, że coś źle robię bo przy błędnym IP też działało. Tak mógłby ktoś poradzić jak sprawdzać czy serwery korzystające z protokołu UDP są aktywne?

KR
  • Rejestracja:prawie 16 lat
  • Ostatnio:6 miesięcy
  • Postów:2514
0

wysyłasz coś i czekasz na odpowiedź, tylko jeśli zamierzasz sprawdzać, to nie lepiej użyć TCP/IP?


░█░█░█░█░█░█░█░█░█░█░█░
CO
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:4
0

No właśnie TCP działa tylko na strony internetowe a raczej port 80, gier już kompletnie nie widzi powyższy kod.

Demonical Monk
  • Rejestracja:ponad 17 lat
  • Ostatnio:11 miesięcy
0
Corypto napisał(a):

No właśnie TCP działa tylko na strony internetowe a raczej port 80, gier już kompletnie nie widzi powyższy kod.

  1. Pojęcie portu jest per protokół. Zawołanie czegoś pod portem :80 przez TCP to zupełnie nie to samo co zawołanie analogicznego adresu via UDP. Mogą tam nawet stać dwie różne usługi i nie będzie konfliktu.
  2. Duża część gier korzysta z TCP. Zapewne sprawdzasz jakieś stare cudo bazujące na Unrealu lub Counter Strike, wtedy tak, musisz użyć UDP jako i owe gry używają.
  3. Tak jak było wyżej wspominane - UDP nie ma pojęcia stałego połączenia, a otwarte gniazdko to nie to samo co otwarte połączenie. Gdy otworzysz gniazdko przy pomocy fsockopen to serwer jeszcze nie dostanie ani bajta. Poszukaj trochę na temat tego jak wygląda protokół komunikacji w interesującej Cię grze i wyślij serwerowi odpowiednią komendę, tak, by po otrzymaniu odpowiedzi (lub jej braku) można było stwierdzić jaki jest stan serwera.

Women were the reason I became a monk - and, ah, the reason I switched back...
CO
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:4
0
Demonical Monk napisał(a):
  1. Duża część gier korzysta z TCP. Zapewne sprawdzasz jakieś stare cudo bazujące na Unrealu lub Counter Strike, wtedy tak, musisz użyć UDP jako i owe gry używają.

No własnie sprawdzałem na tych nowszych. Jak Call of Duty 4/5/6 (wiem ze inaczej się nazywają).

Zmieniłem nawet kod, używam funkcji socket_create i socket_connect, ale dalej to samo.

Mam też inne pytanie, czy jest możliwość by w kod sprawdzający serwery wykonywał się ciągle? Bo chciałbym by usuwane z listy serwery były zaraz po ewentualnie z lekkim opóźnieniem wzmianki. Bo ogólnie jest to wstęp to stworzenia swojej listy serveru chatu mojego autrostwa (projekt na uczelnie).

Demonical Monk
  • Rejestracja:ponad 17 lat
  • Ostatnio:11 miesięcy
0

Nie rozumiesz, każda funkcja będzie działać tak samo - tu nie chodzi o zmianę obsługującej funkcji tylko o włączenie myślenia.
Po zawrotnej minucie szukania znalazłem to: http://gameq.sourceforge.net/
Przejrzyj kod tej biblioteki, całe sprawdzanie odbywa się na podstawie tego, że biblioteka zagaduje do serwera i na podstawie odpowiedzi dowiaduje się, czy jest dostępny, czy też nie. Inaczej się nie dowiesz.

Ciągłe wykonywanie kodu możesz załatwić cronem - cudo do odpalania skryptów w regularnych odstępach czasowych. Pamiętaj jednak by nie sprawdzać stanu serwerów zbyt nachalnie, administratorzy mogą się zdenerwować i Cię wyciąć na firewallu. Typowa strona z rankingiem sprawdza stan co 5-10 minut.


Women were the reason I became a monk - and, ah, the reason I switched back...
edytowany 4x, ostatnio: Demonical Monk

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.