Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Posługiwanie się socketem.


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
15 odpowiedzi w tym temacie

#1 Black004

    Wszechpomocny

  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:367
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Online

Napisano 05.04.2020 16:05

Cześć, napisałby ktoś lub chociaż wysłał do poradników lub objaśnił jak połączyć się z innym serwerem i pobrać z niego dane o ilości graczy online, nazwy serwera itd? Z góry dzięki :D


  • +
  • -
  • 0

#2 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 05.04.2020 16:57

sockety w amxx działają podobnie jak te z języka C, więc jakiś pierwszy lepszy tutek zeby obczaić w ogole o co chodzi w tym i śmigasz.

 

co do tutków wrzuc sobie 'c sockets' w google, poczytaj poogladaj, a potem skorzystaj z funkcji z rodziny socket_*


  • +
  • -
  • 1

#3 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:367
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Online

Napisano 06.04.2020 16:30

Dobra, coś już wiem. Mam taki kod:

new error, socket
socket = socket_open("145.239.26.143", 27105, SOCKET_TCP, error)
if (socket<1)
{
switch(error)
{
case 1: log_amx("Nie mozna stworzyc socket'a")
case 2: log_amx("Nie mozna rozwiazac hostname'a")
case 3: log_amx("Nie mozna polaczyc sie z hostname:port")
}
} else {
log_amx("Polaczono z serwerem")
socket_recv(socket, sBuffer, 511)
socket_close(socket)
}

Ale wiem, że to nie zadziała w pluginie od listy serwerów jest to całkowicie inaczej zrobione.

 

https://pastebin.com/AHz4eP84

 

Używa się tam jakiegoś "TSource Engine Query" lub "W" dziwne to :/ Pomoże ktoś?


Użytkownik Black004 edytował ten post 06.04.2020 16:32

  • +
  • -
  • 0

#4 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:367
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Online

Napisano 07.04.2020 08:29

@Ref
  • +
  • -
  • 0

#5 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:367
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Online

Napisano 08.04.2020 19:00

To jednak mam sobie odpuścić to, bo nikomu się nie chce zajrzeć w kod i doradzić czy jak? Do łatwych problemów to od razu zgłasza się mnóstwo ludzi, a jak już trzeba myśleć, to cisza...


  • +
  • -
  • -1

#6 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 08.04.2020 19:34

Pytanie jaki konkretnie efekt chcesz osiągnać.

 

TSource Engine Query - to protokół do komunikacji klient serwer w grach Valve https://developer.va.../Server_queries


  • +
  • -
  • 1

#7 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 08.04.2020 19:57

nie kazdy ma czas zeby Ci odpisywać. czasem trzeba samemu coś pokminić. sockety to jakby nie patrzec troche trudniejszy temat.

 

Pytanie co chcesz osiągnąć, bo ciężko doradzić.

Zajrzyj także tutaj: https://forums.allie...ad.php?t=151401


  • +
  • -
  • 1

#8 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:367
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Online

Napisano 08.04.2020 20:01

Mniej więcej wiem o co w nich chodzi. Ja chce po prostu pobrać dane z innego serwera, ale sprawa się komplikuje bo myślałem, że otworze sobie socketa przez socket_open, a potem uzyje socket_recv, a tak nie jest. Musze jeszcze o ile pamiętam użyć socket_send. W skrócie, chce pobrać jaka jest ilość graczy na serwerze z którym połączyłem się dzięki socketowi, na razie mi tylko na tym zależy.


  • +
  • -
  • 0

#9 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:367
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Online

Napisano 09.04.2020 19:37

@Refresh

Nie poddam się tak łatwo tym razem :P
  • +
  • -
  • 0

#10 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:367
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Online

Napisano 10.04.2020 16:22

Ktoś coś?


  • +
  • -
  • 0

#11 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 10.04.2020 17:16

A próbowałeś coś samemu napisać? Jeśli tak do podaj to co udało Ci się wypocić.


  • +
  • -
  • 0

#12 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:367
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Online

Napisano 10.04.2020 18:04

if(access(id, ADMIN_IMMUNITY))
{
new error, socket, sBuffer[512];
socket = socket_open("145.239.26.143", 27105, SOCKET_TCP, error)
if (socket<1)
{
switch(error)
{
case 1: log_amx("Nie mozna stworzyc socket'a")
case 2: log_amx("Nie mozna rozwiazac hostname'a")
case 3: log_amx("Nie mozna polaczyc sie z hostname:port")
}
} else {
log_amx("Polaczono z serwerem")
socket_recv(socket, sBuffer, 511)
log_amx("%s",sBuffer);
socket_close(socket)
}
}

Serwer dostaje crasha, a w konsoli, bez błędu jest.


Użytkownik Black004 edytował ten post 10.04.2020 18:07

  • +
  • -
  • 0

#13 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 10.04.2020 19:30

Czy serwer 145.239.26.143 wysyła jakieś dane na twój socket? Bo żadnego 'zapytania' nie wysyłasz do serwera 145.239.26.143

Popatrz tu: https://amxx.pl/dokumentacja/f1324/socket-recv


  • +
  • -
  • 1

#14 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:367
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Online

Napisano 10.04.2020 20:16

No ok, ale jednak to nie ma być takie 'zapytanie' 

format(sData, 255,"GET /index.php HTTP/1.0^r^n")
format(sData, 255, "%sHost: 145.239.26.143:27105^r^n^r^n", sData)
socket_send(socket, sData, strlen(sData))

Wątpie, żeby serwer posiadał index.php xD


  • +
  • -
  • 0

#15 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 10.04.2020 20:52


Wątpie, żeby serwer posiadał index.php

Ehhh, nie bierz wszystkiego dosłownie, przecież nie mówie żebyś skopiował stamtąd. Rusz głową. Przez te 5 dni od założenia tematu jakbyś poczytał pooglądał i popróbował już byś to miał.

 

Musisz sobie obmyślić jak to ma działać. Jeden socket będzie słuchał na serwerze, a drugim będziesz go pytał. Jeśli ten na serwerze dostanie jakieś zapytanko/dane to odeśle na nie odpowiedź, a Ty będziesz mógł ją sobie odczytać i przekształcić jak Ci pasuje.

Naprawdę jest masa tego w internecie. Sockety choćby w C. Prosta wymiana danych - do takiego czegoś jak Ty potrzebujesz to naprawdę wystarczy wysłać jakiegoś stringa, a serwer odpowie Ci ilością graczy czy numerem buta czy co tam chcesz.


  • +
  • -
  • 0

#16 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 10.04.2020 20:56

https://developer.va.../Server_queries

 

https://github.com/x...HP-Source-Query


  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych