Alle IPs im Netzwerk abfragen
Übersicht

![]() |
LukasBananaBetreff: Alle IPs im Netzwerk abfragen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Freunde der 3. Dinemsion,
Mein letztes KillerSpiel ist ebenfalls ein LAN Spiel und das blöde daran ist, wenn man einem Server beitreten will, muss man die IP des HostPCs eingeben. Das ist irgendwie doof ![]() Gibt es mit der neusten B3D Version Funktionen mit der man nicht nur die IPs auf der lokalen Maschine abfragen kann? Gruß LukasBanana |
||
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana Meine Projekte auf github.com: https://github.com/LukasBanana Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du sendest ein Broadcast ins Ntzwerk auf einen festen Port. Jeder Server muss darauf antworten. Von den Server, wo du eine Antwort erhalten hast, trägst du sie in eine Liste ein. | ||
vertex.dreamfall.at | GitHub |
![]() |
LukasBanana |
![]() Antworten mit Zitat ![]() |
---|---|---|
Soll ich das also mit den UDP Netzwerk Funktionen anstellen? | ||
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana Meine Projekte auf github.com: https://github.com/LukasBanana Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, und das nächste mal auch ins Allgemeinforum setzen ^^ | ||
vertex.dreamfall.at | GitHub |
![]() |
LukasBanana |
![]() Antworten mit Zitat ![]() |
---|---|---|
Alles klar! ![]() Wusste nicht dass es das auch in den anderen BlitzBasic Versionen gibt (Blitz- 2D/ 3D/ Max/ Plus usw.) Danke! |
||
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana Meine Projekte auf github.com: https://github.com/LukasBanana Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich meine man kann auch statt der IP den Host Namen angeben ...
und den kann das Programm ja beim nächsten Start wieder vorschlagen . Code: [AUSKLAPPEN] Function NetRun() Local n=0,IP1=0,IP2=0 NetServerIP=0 NetLocalIP=0 If Len(NetServerName$)=0 Then Return n = CountHostIPs(NetServerName$) ;hier den Server Namen eingeben If n=>1 Then IP1 = HostIP(1) n = CountHostIPs("") ;wenn leer dann bekommt man den lokalen Rechner If n=>1 Then NetLocalIP = HostIP(1) If IP1=NetLocalIP Then NetServer=1 Else NetServer=0 If NetServer=1 Then n = CountHostIPs("") ;wenn leer dann bekommt man den lokalen Rechner If n=>1 Then NetServerIP = HostIP(1) DebugLog "Network UDP Server" DebugLog "Server IP " + DottedIP(NetServerIP) NetStreamIn=CreateUDPStream(NetServerPort) ;auf dem hört der immer NetStreamOut=CreateUDPStream(NetServerPort+1) ;spricht DebugLog "NetStreamIn "+NetStreamIn DebugLog "NetStreamOut "+NetStreamOut Else n = CountHostIPs(NetServerName$) ;hier den Server Namen eingeben If n=>1 Then NetServerIP = HostIP(1) DebugLog "Network UDP Client" DebugLog "Server IP " + DottedIP(NetServerIP) NetStreamIn=CreateUDPStream(NetServerPort+1) ;hört NetStreamOut=CreateUDPStream(NetServerPort) ;sendet dahin wo der Server hört NetListCheck(NetServerIP,NetServerPort) ;an dem senden wir dann EndIf End Function |
||
- Zuletzt bearbeitet von Markus2 am Mo, Apr 02, 2007 15:41, insgesamt einmal bearbeitet
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab erst neulich ein UDP Broadcast Programm geschrieben gehabt.
Vielleicht hilft es dir: Code: [AUSKLAPPEN] stream_in=CreateUDPStream(7022)
stream_out=CreateUDPStream(7023) If stream_in=0 Then RuntimeError "Fehler! UDP konnte nicht erstellt werden!" If stream_out=0 Then RuntimeError "Fehler! UDP konnte nicht erstellt werden!" ip_count=CountHostIPs(GetEnv("localhost")) For i=1 To ip_count own_ip=HostIP(1) Next broadcast=own_ip-(own_ip And 255)+255 While Not KeyHit(1) If KeyHit(57) WriteLine stream_out,"SEARCH" SendUDPMsg stream_out,broadcast,7022 Print "Sende Broadcast!" last_time=MilliSecs() EndIf d=RecvUDPMsg(stream_in) While d<>0 And d<>own_ip While ReadAvail(stream_in) s$=ReadLine$(stream_in) Select s$ Case "FOUND" Print "Server: "+DottedIP$(d)+" Ping: "+(MilliSecs()-last_time) Case "SEARCH" WriteLine stream_out,"FOUND" SendUDPMsg stream_out,d,7022 Print "Antwort: "+DottedIP$(d) Case s$<>"FOUND" And s$<>"SEARCH" Print s$ End Select Delay 1 Wend d=RecvUDPMsg(stream_in) Delay 1 Wend Delay 10 Wend CloseUDPStream stream_in CloseUDPStream stream_out End Function INT_IP(IP$) a1=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,".")) a2=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,".")) a3=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,".")) a4=Int(IP$) Return (a1 Shl 24) + (a2 Shl 16) + (a3 Shl 8 ) +a4 End Function War übrigens neulich schonmal eine Frage. |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
LukasBanana |
![]() Antworten mit Zitat ![]() |
---|---|---|
@StepTiger: Ich habe dein Beispiel zwar noch nicht so ganz durchschaut, aber wenn man mit UDP arbeitet kann ich jedenfalls alle IPs im Netzwerk abfragen, oder? (Also nur wenn man eine LAN macht, nicht mit Internet, nur normales Netzwerk) | ||
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana Meine Projekte auf github.com: https://github.com/LukasBanana Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wird aber sehr langsam werden, denn wenn 50 PC's im Game-Netzwerk hängen und die 50PC's sich immer 49 mal senden müssen, ob wer da ist, wirds richtig eng.
Das lässt sich mit nem Masterserver regeln. Brauchst aber erst einen. Der Masterserver empfängt alle gesendeten "hallos"'s und schickt diese an die 49 anderen player weiter. d.h. der Matserserver muss dann nur gestresst sein. :> |
||
![]() |
LukasBanana |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich brauche die UDP Funktionen nur einmal in meinem Programm. Nähmlich immer dann wenn ein neuer Client einem Server beitreten will.
Bzw. wenn ein Client alle zur verfügung stehenden Server sucht. So wie bei CSS oder anderen LAN Spielen. ![]() |
||
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana Meine Projekte auf github.com: https://github.com/LukasBanana Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
The_Nici:
Was redest du da? Das eigentliche Spielen im Server hat doch gar nichts mit der Anfrage nach Servern zu tun! 50 ist so ein minimaler Bereich. Im Internet wird es damit eng, da es dort über vier Milliarden mögliche IPs sind. Ein Masterserver ist im LAN sinnlos, solange es nur um einen Verzeichnisserver geht. Sinnvoll ist, einfach einen Broadcast zu senden (wie in meinem Beispiel). Im eigentlichen Spiel muss sowieso immer einer der Host sein. |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
CS hat nen Server. Da gibts keine peer to peer zwischen spielern.
du meldest dich dem server der meldet dich dem rest. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist allerdings nur im Internet, hier geht es ja um Lan, und da greift auch CS auf Broadcast zurück. ![]() |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
LukasBanana |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also kann ich die UDP Funktionen, so wie ich es mit vorgestellt habe, einsetzen? (Also nur einmal am Anfang)
ich kann das immoment nicht gescheit testen! ![]() Gruß LukasBanana |
||
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana Meine Projekte auf github.com: https://github.com/LukasBanana Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group