[PHP] Gameservers detecteren op lan voor status op website

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • LittleWan
  • Registratie: Februari 2003
  • Laatst online: 11-09 14:26
beste,

Ik ben bezig met een website voor een studentenhuis van rond de 250 man. Wij zitten allemaal op 1 Lan. Aangezien er hier heel vaak gegamed wordt zou het wel handig zijn als men via de site zou kunnen zien welke games er op dat moment gehost worden (beetje zoals HLSW) maar dan op een website zodat niet iedereen die tool hoeft te installeren....
Nu had ik gedacht om met PHP iets te maken die kan detecteren op het lan of die games gespeeld worden. Eventueel de gegevens van de server gaan halen zoals , spel, speltype, aantal spelers, map....
Zijn er mensen die hier ervaring mee hebben of weten waar ik moet beginnen zoeken. Google en de search hier hebben mij nog niet veel wijzer gemaakt.
Het zou vooral gaan om Call of duty, BattleField, AOE3, en eventueel nog wat ander waar ik later eens kan voor kijken

Alvast bedankt.

http://www.sillevl.be - blog http://www.sillevl.be/blog - flickr http://www.flickr.com/sillevl


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
Daar is wel een library voor :) Wat ik zo snel zag worden Call of Duty and Battlefield iig ondersteund.

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • Kayshin
  • Registratie: Juni 2004
  • Laatst online: 09-03-2018

Kayshin

Bl@@T @@P!!!

Je zou ook gebruik kunnen maken van x-fire: www.xfire.com. Als iedereen een account aanmaakt kan iedereen zelfs bijhouden het aantal uren dat je speelt.

My personal videoteek: -Clique-; -NMe- is een snol!


Acties:
  • 0 Henk 'm!

  • LittleWan
  • Registratie: Februari 2003
  • Laatst online: 11-09 14:26
Kayshin schreef op woensdag 16 november 2005 @ 19:42:
Je zou ook gebruik kunnen maken van x-fire: www.xfire.com. Als iedereen een account aanmaakt kan iedereen zelfs bijhouden het aantal uren dat je speelt.
T'probleem is dat wij een 2mb (kleine b !!) moeten delen met 250 man en dat downloaden aan max 2kb/s gaat, msn loopt zeer regelmatig vast omdat het gewoon te traag gaat, dus ik vrees dat dat zo niet echt een optie wordt.
Nu wil ik het juist zo maken dat niemand iets moet installeren , zo zullen er zeker veel meer mensen gebruik van maken...

Ik ben eens aan het kijken naar die library en ziet er interessant uit, (als ik het werkende krijg tenminste) bedankt

http://www.sillevl.be - blog http://www.sillevl.be/blog - flickr http://www.flickr.com/sillevl


Acties:
  • 0 Henk 'm!

  • Kayshin
  • Registratie: Juni 2004
  • Laatst online: 09-03-2018

Kayshin

Bl@@T @@P!!!

Misschien een stomme vraag, maar wordt het dan niet eens tijd om het internet wat te upgraden dan? Voor x-fire is volgens mij ook bijna geen dataverkeer nodig...

My personal videoteek: -Clique-; -NMe- is een snol!


Acties:
  • 0 Henk 'm!

  • LittleWan
  • Registratie: Februari 2003
  • Laatst online: 11-09 14:26
Kayshin schreef op woensdag 16 november 2005 @ 19:55:
Misschien een stomme vraag, maar wordt het dan niet eens tijd om het internet wat te upgraden dan? Voor x-fire is volgens mij ook bijna geen dataverkeer nodig...
Daar hebben wij jammergenoeg al jaren vraag naar, vorig jaar is nog maar verdubbeld geweest.
Nu denk ik dat msn ook niet veel dataverkeer nodig heeft maar toch...
We hebben er leren mee leven.

Maar nu wil ik het juist eens niet met xfire doen...

Ik heb ondertussen de lib al werkende gekregen al moet ik zeggen dat het voor een vast ip en zo is, nu moet ik nog zorgen dat ie het netwerk gaat afscannen...

Blijkbaar is het script heel traag. Ik ga proberen het elke 10 minuten uit te voeren en de resultaten proberen wegschrijven naar een database. Nu nog uitzoeken hoe ik dat script automatisch moet laten uitvoeren...
Stel dat ik het vlugger kan laten doen kan ik misschien nog playerstats toevoegen waarn je kan zien hoeveel iedereen speelt en zo verder... (maar dan zal het script eerst veeeeel minder load moeten hebben en sneller worden.)

Iemand misschien een idee waar ik die protocollen zou kunnen terugvinden? misschien kan ik het dan zonder script doen. nu ja ik zie wel, tzijn allemaal maar ideeen

Misschien heeft iemand ander nog een idee om dat op te lossen?

[ Voor 35% gewijzigd door LittleWan op 16-11-2005 20:30 ]

http://www.sillevl.be - blog http://www.sillevl.be/blog - flickr http://www.flickr.com/sillevl


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Als je het met PHP wilt gaan doen zul je waarschijnlijk bij de functie fsockopen() uitkomen.
In combinatie met een IP-range kun je deze elke PC laten proben op van te voren gespecificeerde poorten, waarop de diverse spellen draaien.

Acties:
  • 0 Henk 'm!

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Misschien is het ook slim het geheel op te splitsen, een script op de achtergrond die scant en een script voor de gebruikers die de resultaten laat zien. Zo hoeft de gebruiker niet lang te wachten op de scan.

"The shell stopped unexpectedly and Explorer.exe was restarted."


Acties:
  • 0 Henk 'm!

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05 09:40

GX

Nee.

Je zou per game kunnen kijken hoe ze proben naar lan-servers (met bijvoorbeeld ethereal) en dat simuleren met je PHP script; dit eens per minuut oid uitvoeren en de resultaten ergens opslaan; dan heb je een semi-actueel overzicht.
Het nadeel is dus wel dat je op zoek moet naar de methodes die games gebruiken om servers te vinden

Acties:
  • 0 Henk 'm!

  • LittleWan
  • Registratie: Februari 2003
  • Laatst online: 11-09 14:26
idd, ik hoop dat ik dat ergens kan vinden op internet of zo.
De lib van gsQuery werkt perfect, maar het duurt 550ms om 1 ip+poort te checken.

Als ik kijk naar HLSW die checkt het ganse lan binnen 2seconden op verschillende poorten

http://www.sillevl.be - blog http://www.sillevl.be/blog - flickr http://www.flickr.com/sillevl


Acties:
  • 0 Henk 'm!

  • TheBlasphemer
  • Registratie: September 2004
  • Laatst online: 21-09 12:43
Ik weet niet precies hoe het met PHP werkt, maar een veelgebruikte techniek hierbij is broadcasting.
Meeste spellen 'broadcasten' een packet, en dan krijgen ze van de servers een packet terug.
Je kan dus met een packetsniffer kijken wat voor packets dit zijn, en die dan zelf sturen en dan bijv 5 sec wachten op replies...

[img=http://www.web2messenger.com/smallstatus/w2m/theblasp.png]


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
LittleWan schreef op woensdag 16 november 2005 @ 22:43:
idd, ik hoop dat ik dat ergens kan vinden op internet of zo.
De lib van gsQuery werkt perfect, maar het duurt 550ms om 1 ip+poort te checken.

Als ik kijk naar HLSW die checkt het ganse lan binnen 2seconden op verschillende poorten
Mogelijke werkwijze :

Elke 30 minuten :
1 : Ping eerst het hele subnet (/iprange) om te zien welke comps er aan staan.
2 : Per comp die aanstaat kijken met fsockopen of er poorten van een spel openstaan ( c.q. server draait ) zie voor portranges google.
3 : Per comp met misschien een spel, die lib gaan draaien, als er een spel draait dan stats opslaan en ip-opslaan.

Elke minuut :
Per ip-adres van stap 3 uit je 30 min cron de stats ophalen en indien geen stats meer aanwezig ( geen spel meer draaien ) dan ip-adres uit de lijst halen. Anders weer gewoon de stats opslaan.

En dan nog even een inet pagina maken zodat de mensen zelf hun ip-adres aan de minuut lijst kunnen opgeven.
Tijden zijn variabel, maar gewoon eens per zoveel tijd het hele netwerk scannen naar spellen ( is langzaam en resourcevretend omdat het in 1e instantie 250 pc's langs moet gaan ) en dan alleen voor de comps die spellen kunnen draaien uitgebreider onderzoeken of ze het ook echt draaien.
Door de handmatige per web-pagina ( of via batch-file opgestart iets ) kunnen mensen zelf hun server aanmelden, doen ze dit niet dan wordt hij na max 30 min. toch gevonden.

Enige nadeel kan zijn dat sommige firewalls nog wel eens over de jank willen gaan als je om de 30 min een simpele port-scan uitvoert. Is niet leuk als de gebruiker om de 30 min een riedel aan popups krijgt over port-scanning vanaf jouw comp.

Maar handigste lijkt me gewoon dat je een pagina opzet waar mensen gewoon hun ip-adres ingeven en dan opgeven wanneer hun server ongeveer online is, dan alleen de hierboven genoemde eliminatie methode voor deze ip's te draaien tijdens de opgegeven tijden. Want met 250 mensen online lijkt het mij vrij sterk als er ook 200 servers draaien. En waarschijnlijk zijn de server die er zijn toch meestal van dezelfde personen op dezelfde tijdstippen.
En het biedt ook nog eens de mogelijkheid tot het houden van een private toernooitje door gewoon op de pagina aan te geven dat jouw server vandaag niet online, wordt hij niet gescant en komt ook niet op de pagina, maar je members kunnen nog wel handmatig connecten.

Acties:
  • 0 Henk 'm!

  • LittleWan
  • Registratie: Februari 2003
  • Laatst online: 11-09 14:26
Ik denk dat ik een tool ga maken niet in php maar in een andere taal, deze laat ik continu scannen ipv php. Het duurt soms tot 2 seconden voor een antwoordt ontvangen wordt. Nu denk ik niet dat zoiets veel netwerk load of processor load vraagt (zelf niet via php).
Ik heb nu een tool waar ik de verzonden strings op die poorten kan mee lezen en er staat veel tekst in, maar ook wat hex waarden, ik moet er enkel nog zien achter te komen wat ze betekenen, waarschijnlijk zijn ze afkomstig van het udp protocol.
Nu zou ik die tool alles laten plaatsen in een xml of txt file (of rechtstreeks in de mysql db) en zo de gegevens op de site plaatsen.
Is dit een goed idee of zou ik het toch beter anders oplossen?

vb van die strings:
code:
1
qq!žøÿÿÿÿinfoResponse\challenge\xxx\protocol\21\hostname\3A\mapname\mp_arnhem\sv_maxclients\20\gametype\dm\pure\1\ff\1\kc\1\hw\2\pb\0\mod\0

code:
1
Úq ÿÿÿÿgetstatus


Ik kan dus dat protocol zelf een beetje proberen ontcijferen, maar ik had gedacht dat ik de beschrijving van de opmaak van die strings zou kunnen vinden op internet , maar niet dus :s

[ Voor 23% gewijzigd door LittleWan op 18-11-2005 12:37 ]

http://www.sillevl.be - blog http://www.sillevl.be/blog - flickr http://www.flickr.com/sillevl


Acties:
  • 0 Henk 'm!

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

LittleWan schreef op vrijdag 18 november 2005 @ 12:33:
Ik denk dat ik een tool ga maken niet in php maar in een andere taal, deze laat ik continu scannen ipv php. Het duurt soms tot 2 seconden voor een antwoordt ontvangen wordt. Nu denk ik niet dat zoiets veel netwerk load of processor load vraagt (zelf niet via php).
Ik heb nu een tool waar ik de verzonden strings op die poorten kan mee lezen en er staat veel tekst in, maar ook wat hex waarden, ik moet er enkel nog zien achter te komen wat ze betekenen, waarschijnlijk zijn ze afkomstig van het udp protocol.
Nu zou ik die tool alles laten plaatsen in een xml of txt file (of rechtstreeks in de mysql db) en zo de gegevens op de site plaatsen.
Is dit een goed idee of zou ik het toch beter anders oplossen?

vb van die strings:
code:
1
qq!žøÿÿÿÿinfoResponse\challenge\xxx\protocol\21\hostname\3A\mapname\mp_arnhem\sv_maxclients\20\gametype\dm\pure\1\ff\1\kc\1\hw\2\pb\0\mod\0

code:
1
Úq ÿÿÿÿgetstatus


Ik kan dus dat protocol zelf een beetje proberen ontcijferen, maar ik had gedacht dat ik de beschrijving van de opmaak van die strings zou kunnen vinden op internet , maar niet dus :s
Dit is in ieder geval een betere oplossing dan alleen een PHP script te gebruiken. Dus qua idee zit het wel goed. De protocollen moet je maar per spel opzoeken ipv per tekenreeks, gezien dat makkelijker zoekt op internet. Je kunt ook tekens negeren. En je zou met regular expressions kunnen werken om die tekenreeksen te kunnen herkennen. En dan alleen de nuttige info uit die strings halen.

Acties:
  • 0 Henk 'm!

  • LittleWan
  • Registratie: Februari 2003
  • Laatst online: 11-09 14:26
eghie schreef op vrijdag 18 november 2005 @ 18:55:
[...]
En je zou met regular expressions kunnen werken om die tekenreeksen te kunnen herkennen. En dan alleen de nuttige info uit die strings halen.
Ik zal eerst eens moeten opzoeken wat regular expressions zijn :*)

Naar aanleiding van een ander topic dat op slot ging, zou ik willen zeggen dat ik het tooltje graag in Java zou willen maken (heb hier op dit moment de meeste kennis over). (misschien is een titel aanpassing dan wel nodig)
Veel ervaring met programmeren heb ik niet en zeker niet met netwerken.
Kunnen jullie mij misschien even helpen waar ik moet zoeken of vertellen hoe ik dat het beste aanpak?
Volgens mij moet ik een programma maken met meerdere threads, eentje om te luisteren en eentje voor het zenden van de aanvraag. Dit gaat allemaal via udp. Hoe ik zo een udp connectie moet maken heb ik nog niet echt gevonden. (veel examples gaan over server/client connecties).

Ik ga alvast nog wat opzoeken hoe ik die connectie moet maken in java.
ik moet het volgende kunnen:
elke minuut een aanvraag naar alle ip's in het berijk verzenden (met 255.255.255.255 dacht ik)
continu controlleren of er een antwoord gegeven wordt.

http://www.sillevl.be - blog http://www.sillevl.be/blog - flickr http://www.flickr.com/sillevl


Acties:
  • 0 Henk 'm!

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 21-09 16:37

Basszje

Reisvaap!]

Het beste wat je volgens mij gewoon kan doen is een process draaien wat de huidige servers in kaart brengt en eentje die de output voor de user maakt. Dat lijkt mij veruit het handigst, zoals ook al gezegd is. Dat kan bv webbased via een JSP / Tomcat server icm Java. De zoeker ververst gewoon periodiek de gegevens. Eens per vijf minuten per gevondne server oid?

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Acties:
  • 0 Henk 'm!

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Of laat je zelf geschreven tooltje gewoon HTML, of desnoods PHP uitspuggen in een map welke door jou webserver te bereiken is. Hebben je gebruikers alleen een browser nodig.

"The shell stopped unexpectedly and Explorer.exe was restarted."


Acties:
  • 0 Henk 'm!

  • LittleWan
  • Registratie: Februari 2003
  • Laatst online: 11-09 14:26
Kaassoevlee schreef op zaterdag 19 november 2005 @ 11:32:
Of laat je zelf geschreven tooltje gewoon HTML, of desnoods PHP uitspuggen in een map welke door jou webserver te bereiken is. Hebben je gebruikers alleen een browser nodig.
Goed idee, zover had ik ook nog niet gedacht.

Nu heb ik iets gevonden op internet http://www.jfind.com/articles/glass033100.shtml die ondertussen al werkt. Nu zit ik met het volgende: wat moet ik doen als ik meerdere antwoorden krijg van meerdere servers?

http://www.sillevl.be - blog http://www.sillevl.be/blog - flickr http://www.flickr.com/sillevl


Acties:
  • 0 Henk 'm!

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

ik kan je mijn eigen programmaatje (met een heel ander doel) wel aanraden
linkje
het programma is in C++ geschreven, maar je vindt zowel in de broncode als in de documentatie vast wel enkele dingetjes die je kan gebruiken. (zeker in de bestanden ServerControl.h/.cpp en de UDP klasse die ik gemaakt heb)
de naamgeving van netwerk functies is meestal toch dezelfde in verschillende talen.

verder kan ik je deze links nog geven:
http://www.int64.org/docs/gamestat-protocols/index.html
http://www.nerdclub.net/alp/cowiki/17.html (blijkt offline te zijn?)

ASSUME makes an ASS out of U and ME


Acties:
  • 0 Henk 'm!

  • LittleWan
  • Registratie: Februari 2003
  • Laatst online: 11-09 14:26
via de www.int64.org ben ik op de sourcecode gekomen die meerdere games ondersteunt. er zat ook echter een gecompileerde dll bij ik ga nu proberen die dll in java te gebruiken (geen idee of dat werkt)

http://www.sillevl.be - blog http://www.sillevl.be/blog - flickr http://www.flickr.com/sillevl


Acties:
  • 0 Henk 'm!

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

als je mijn code bekijkt en de bijhorende website, kun je snel zien dat ik meer games ondersteun dan wat je op int64.org vindt.

de minimale implementatie die ik gebruik is al wat je nodig hebt. Als je mijn code opent staan alle query strings mooi onder elkaar.
en kun je gelijk wat bijleren over het hoe en wat van network programming, zelfs al is de taal verschillend ;)

ASSUME makes an ASS out of U and ME

Pagina: 1