Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Čitanje statusa kanter severa

[es] :: Pascal / Delphi / Kylix :: Čitanje statusa kanter severa

[ Pregleda: 3373 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

cacafaca
Nemanja Simovic
Beograd, Voždovac

Član broj: 49511
Poruke: 174
*.dynamic.isp.telekom.rs.

ICQ: 68999229


+18 Profil

icon Čitanje statusa kanter severa31.03.2010. u 21:54 - pre 170 meseci
Hoću da pročitam informacije sa kanter servera (CS 1.6), ali nikako ne uspevam da nateram da mi se poslati UDP paket vrati. Probao sam i sa TUDPSocket-om (primer: http://download.cacafaca.gotdn...iranje/Delphi/UDP%20Sender.rar), kao i sa Indy-jevim TUDPClient-om (primer: http://download.cacafaca.gotdn...Delphi/UDP%20Sender%20Indy.rar).

Svi pričaju (po forumima) da treba da odustanem od Delphi-jevih Internet komponeti, i da se radi sa Indy. Ili čak ICS, mada imam Delphi 6, pa sam uz njega dobio Indy-jeve komponente, pa reko da ne komplikujem.

Uglavnom, ja treba da pošaljem preko UDP klijenta na primer na port 27015 (podrazumevani kanter port) sledeći strinng "FF FF FF FF 54 53 6F 75 72 63 65 20 45 6E 67 69 6E 65 20 51 75 65 72 79 00" što kada se prevede sa HEX-a bude #255#255#255#255"TServer info query"#0, otprilike. To ja i pošaljem, ali mi se ne vraća na UDPServer ništa. Ne znam kako da bindujem, ili kako se već kaže, da me server gađa tačno. Tj. ja sam pokušao da ga bindujem ali nema efekta. Provaravao sam uy pomoć UDP Test Tool-a (http://download.cacafaca.gotdns.com/Programi/UDP%20Test%20Tool). Pomoću njega pošaljem isti strin i kanter server mi vrati podatke, a moj programčić neće pa neće! Da pukneš od muke!

Ako nekog interesuje, bio bih mu zahvalan da pogleda kod, u test aplikaciji. Nešto propuštam ali evo googlam već danima po forumima i jednostavno ne vidim šta propuštam. Kad završim aplikacijicu koju sam naumio šaljem ovde. Hvala unapred!
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Čitanje statusa kanter severa31.03.2010. u 23:19 - pre 170 meseci
> Uglavnom, ja treba da pošaljem preko UDP klijenta na primer na port 27015 (podrazumevani kanter port) sledeći strinng
> "FF FF FF FF 54 53 6F 75 72 63 65 20 45 6E 67 69 6E 65 20 51 75 65 72 79 00" što
> kada se prevede sa HEX-a bude #255#255#255#255"TServer info query"#0, otprilike. To ja i pošaljem, ali mi se ne vraća na UDPServer ništa.
> Ne znam kako da bindujem, ili kako se već kaže, da me server gađa tačno. Tj. ja sam pokušao da ga bindujem ali nema efekta.
> Provaravao sam uy pomoć UDP Test Tool-a (http://download.cacafaca.gotdns.com/Programi/UDP%20Test%20Tool). Pomoću njega pošaljem isti strin i kanter server mi vrati podatke,
> a moj programčić neće pa neće! Da pukneš od muke!

Mislim da je najefikasnije da downloduješ neki network monitor tool i uporediš ono što šalje test program koji radi i ono što šalje tvoja aplikacija.

 
Odgovor na temu

anon68680

Član broj: 68680
Poruke: 528
109.93.92.*



+14 Profil

icon Re: Čitanje statusa kanter severa01.04.2010. u 14:17 - pre 170 meseci
Mislim da ti server binding ne valjaju... Pogledaj na koji port bi trebalo server da odgovori.
Inace, ne znam kako si uradio u ovim tvojim primerima, ali to sto ti hoces da posaljes u hex obliku moras poslati kao buffer.
Znaci napravis promenljivu duzine tog hexa tipa byte, i ispunis ga odgovarajucim bajtovima. Potom preko IDClient.Sendbuffer() posaljes to.

[Ovu poruku je menjao krza dana 01.04.2010. u 16:03 GMT+1]
 
Odgovor na temu

cacafaca
Nemanja Simovic
Beograd, Voždovac

Član broj: 49511
Poruke: 174
*.dynamic.isp.telekom.rs.

ICQ: 68999229


+18 Profil

icon Re: Čitanje statusa kanter severa01.04.2010. u 20:14 - pre 170 meseci
Citat:
savkic: Mislim da je najefikasnije da downloduješ neki network monitor tool i uporediš ono što šalje test program koji radi i ono što šalje tvoja aplikacija.
To sam i uradio. Koristio sam UDP Test Tool (Evo linka ako hoćeš da ga skineš). Uz pomoć UDP Test Tool-a pošaljem "FF FF FF FF 54 53 6F 75 72 63 65 20 45 6E 67 69 6E 65 20 51 75 65 72 79 00" i od servera dobijem odziv "FF FF FF FF 6D 31 39 32 2E 31 36 38 2E 32 2E 31 3A 32 37 30 31 35 00 43 61 63 69 6E 20 43 53 20 31 2E 36 20 53 65 72 76 65 72 00 64 65 5F 61 7A 74 65 63 00 63 73 74 72 69 6B 65 00 43 6F 6E 64 69 74 69 6F 6E 20 5A 65 72 6F 00 00 0B 2F 64 77 00 01 77 77 77 2E 63 6F 75 6E 74 65 72 2D 73 74 72 69 6B 65 2E 6E 65 74 00 00 00 01 00 00 00 00 9E F7 0A 00 01 01 00". Zatim sam na mašini na kojoj je HLDS.EXE (Dedicated Server) pokrenut, pokrenuo UDP Test Tool i glumio kanter server. Prethodno sam naravno ugasio HLDS.EXE. UDP Test Tool primi onaj kraći paket, a posle vratim onaj duži. To sam udario da bi proverio šta kanter server prima od podataka, a posle da proverim da li moj test primer šalje iste te podatke. I uverio sam se. Test primer šalje iste te podatke. Ali kada šaljem na kanter server, ne uspem da uhvatim odgovor.

Citat:
krza: Mislim da ti server binding ne valjaju... Pogledaj na koji port bi trebalo server da odgovori.
Inace, ne znam kako si uradio u ovim tvojim primerima, ali to sto ti hoces da posaljes u hex obliku moras poslati kao buffer.
Znaci napravis promenljivu duzine tog hexa tipa byte, i ispunis ga odgovarajucim bajtovima. Potom preko IDClient.Sendbuffer() posaljes to.
Kanter server odgovori na bilo koji port na koji sam se bindovao. To pričam za UDP Test Tool. Ja bindujem UDP Test Tool na npr port 1000 i dobijm odgovor. A poslao sam zahtev na 27015.
Nisam siguran da će SendBuffer() da ima efekta jer sam proveravao šta se prima na serverskoj strani. On prima isti string i kada šaljem iz mog test programa i iz UDP Test Tool-a. Ali ću da probam ipak.

Hvala obojci na odgovorima!

 
Odgovor na temu

anon68680

Član broj: 68680
Poruke: 528
*.dynamic.isp.telekom.rs.



+14 Profil

icon Re: Čitanje statusa kanter severa02.04.2010. u 00:29 - pre 170 meseci
ovako sam uradio u d2009, radi provereno.

Code:

var
  buffer: TBytes;
begin
  SetLength(buffer,25);

  for x := 0 to 3 do
    buffer[x] := $FF;

  buffer[4] := $54;
  buffer[5] := $53;
  buffer[6] := $6f;
  buffer[7] := $75;
  buffer[8] := $72;
  buffer[9] := $63;
  buffer[10] := $65;
  buffer[11] := $20;
  buffer[12] := $45;
  buffer[13] := $6e;
  buffer[14] := $67;
  buffer[15] := $69;
  buffer[16] := $6e;
  buffer[17] := $65;
  buffer[18] := $20;
  buffer[19] := $51;
  buffer[20] := $75;
  buffer[21] := $65;
  buffer[22] := $72;
  buffer[23] := $79;
  buffer[24] := $00;

  IdUDPClient1.SendBuffer('serverip',27016,buffer);
 


Moze to i jednostavnije sa varijablom u koji uneses hex kao string pa pozivas strtohex, ali ovo cisto da vidis kako tacno izgleda.

A u onUDPRead TIDUDPServer komponente stavis nesto tipa:

Code:

 memo1.lines.add(bytestostring(adata));


A kad sam ti reko da ti bindings ne valja mislio sam da bi bindings za server trebalo ovako da izgleda:

Code:

with idudpserver1.bindings.add do
begin
 Port := 12345;
 IP := tvojip;
end;
 
Odgovor na temu

cacafaca
Nemanja Simovic
Beograd, Voždovac

Član broj: 49511
Poruke: 174
*.dynamic.isp.telekom.rs.

ICQ: 68999229


+18 Profil

icon Re: Čitanje statusa kanter severa04.04.2010. u 21:18 - pre 170 meseci
Fala krzo, ali vec sam nasao. Ja sam ustvari lupetao kada sam postavljao drugu komponentu za slusanje odgovora :) Ustvari mi nije ni potreban TIdUDPServer. A evo i jednostavnog koda kog sam našao:
Code:
unit cssQuery;

interface

uses
  Dialogs, IdUDPClient, SysUtils, ClipBrd;

type

  wmCSSQuery = class
    protected
      querySocket: TIdUDPClient;
    private
    public
      function Query(Address: String; Port: Word): String;

      constructor Create;
  end;

const

   A2S_INFO = chr(255) + chr(255) + chr(255) + chr(255) + chr(84) + 'Source Engine Query';

implementation

constructor wmCSSQUERY.Create;
begin
  Inherited;
end;

function wmCSSQUERY.Query(Address: String; Port: Word): String;
var
  QueryReply: array[0..255] of Char;
begin
  querySocket := TIdUDPClient.Create(nil);
  querySocket.Host := Address;
  querySocket.Port := Port;
  querySocket.Send(A2S_INFO);
  querySocket.ReceiveBuffer(QueryReply, SizeOf(QueryReply));
  ClipBoard.SetTextBuf(QueryReply);
end;

end.
 
Odgovor na temu

cacafaca
Nemanja Simovic
Beograd, Voždovac

Član broj: 49511
Poruke: 174
*.dynamic.isp.telekom.rs.

ICQ: 68999229


+18 Profil

icon Re: Čitanje statusa kanter severa20.04.2010. u 19:02 - pre 169 meseci
Jos nije gotovo ali ako neko hoće da pogleda i da prokomentariše. Baš me interesuje šta mislite.

Kanter informator 1.0.0.0 http://download.cacafaca.gotdn...je/Delphi/KanterInformator.rar (Upucan ekran : http://lh4.ggpht.com/_opN3XMK5...0/kanterupit%20screenshot1.PNG).

Inače, miči me kako da pročitam vreme. U upustvu (http://developer.valvesoftware.com/wiki/Server_queries#A2S_PLAYER) stoji da je Time connected: float. Ali ne znam kako da je pročitam.
Probao sam razne varijante. I ovako
Code:

  TimeConenctedNiz: array [0..3] of Char;
  ...
        TimeConenctedNiz[0] := OdgovorChar[poz]; Inc(Poz);
        TimeConenctedNiz[1] := OdgovorChar[poz]; Inc(Poz);
        TimeConenctedNiz[2] := OdgovorChar[poz]; Inc(Poz);
        TimeConenctedNiz[3] := OdgovorChar[poz]; Inc(Poz);

I ovako
Code:

  TimeConenctedNiz: array [0..3] of Char;
  ...
        TimeConenctedNiz[2] := OdgovorChar[poz]; Inc(Poz);
        TimeConenctedNiz[3] := OdgovorChar[poz]; Inc(Poz);
        TimeConenctedNiz[0] := OdgovorChar[poz]; Inc(Poz);
        TimeConenctedNiz[1] := OdgovorChar[poz]; Inc(Poz);

... da mu zamenim HI i LO byte. Float je 4 byte-a, a TTime je ~ Double, koji je 8 byte-a. I nikako niisam uspeo da kastujem.

Probao sam i sa Single i sa Double...
Code:
TimeConencted := PSingle(@TimeConenctedNiz)^;  // 


Ako neko ima ideju, neka javi. Hvala unapred.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Čitanje statusa kanter severa21.04.2010. u 16:01 - pre 169 meseci
> Inače, miči me kako da pročitam vreme. U upustvu (http://developer.valvesoftware.com/wiki/Server_queries#A2S_PLAYER) stoji da je Time connected: float.
> Ali ne znam kako da je pročitam.

Tamo stoji da je ta vrednost u sekundama, dakle to nije TDateTime već dužina trajanja. Primi podatak kao Single i dalje dodeli nekoj integer promenljivi.
 
Odgovor na temu

cacafaca
Nemanja Simovic
Beograd, Voždovac

Član broj: 49511
Poruke: 174
*.dynamic.isp.telekom.rs.

ICQ: 68999229


+18 Profil

icon Re: Čitanje statusa kanter severa21.04.2010. u 19:12 - pre 169 meseci
Citat:
savkic:Tamo stoji da je ta vrednost u sekundama, dakle to nije TDateTime već dužina trajanja. Primi podatak kao Single i dalje dodeli nekoj integer promenljivi.
Šta da kažem sem SAVKICU MAJSTORE! A ja treba da promenim naočare. To već pričam godinu dana. Još od treće bandere.
 
Odgovor na temu

ruhuaking
111111

Član broj: 259492
Poruke: 1
122.235.178.*



Profil

icon cacafaca,help me! thx.12.05.2010. u 16:28 - pre 168 meseci
http://www.elitesecurity.org/t...-Citanje-statusa-kanter-severa

i am from aisa , iam Study delphi

can you send "Kanter informator" source code for my Email ? xszhuchao(at)xscc.com thank you very much !

 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Čitanje statusa kanter severa

[ Pregleda: 3373 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.