Alle IPs im Netzwerk abfragen

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

LukasBanana

Betreff: Alle IPs im Netzwerk abfragen

BeitragMo, Apr 02, 2007 12:41
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Neutral
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

BeitragMo, Apr 02, 2007 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Apr 02, 2007 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Apr 02, 2007 13:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, und das nächste mal auch ins Allgemeinforum setzen ^^
vertex.dreamfall.at | GitHub

LukasBanana

BeitragMo, Apr 02, 2007 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Alles klar! Very Happy
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

BeitragMo, Apr 02, 2007 15:04
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Apr 02, 2007 15:05
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

LukasBanana

BeitragMo, Apr 02, 2007 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
@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

BeitragMo, Apr 02, 2007 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Apr 02, 2007 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Wink
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

BeitragMo, Apr 02, 2007 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Dreamora

BeitragMo, Apr 02, 2007 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Apr 02, 2007 19:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist allerdings nur im Internet, hier geht es ja um Lan, und da greift auch CS auf Broadcast zurück. Wink
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 Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

LukasBanana

BeitragMo, Apr 02, 2007 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
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! Neutral
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

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group