Seite 1 von 1

Server-Suche?

Verfasst: 05.01.2008 22:20
von Milchshake
Hi,
ich will in LAN alle möglichen Ports absuchen, und herrausfinden, welcher
dieser Ports gerade benutzt wird.
Also hier mal der Code:
;Serverside (diese Server sollen gefunden werden)

Code: Alles auswählen

InitNetwork()



Procedure Ausgabe(String$)
 AddGadgetItem(1, -1, String$)
 SetActiveGadget(1)

EndProcedure

OpenWindow(1,0,0,400,300,"Server-Erstellung", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
 CreateGadgetList(WindowID(1))
  EditorGadget(1, 5, 5, 390, 260, #PB_Editor_ReadOnly)

Port1 = 320
Port2 = 479
Port3 = Random(7000)
Ausgabe("ErsterServer: "+Str(Port1))
Ausgabe("ZweiterServer: "+Str(Port2))
Ausgabe("DritterServer: "+Str(Port3))


CreateNetworkServer(1,Port1)
CreateNetworkServer(2,Port2)
CreateNetworkServer(3,Port3)
Repeat 
Event = WindowEvent()
 Select Event
  Case #PB_Event_CloseWindow
   quit = 1
   EndSelect
Delay(100)
   
   Until quit = 1 
;LAN-Suchprogramm

Code: Alles auswählen

InitNetwork()



Procedure Ausgabe(String$)
 AddGadgetItem(1, -1, String$)
 SetActiveGadget(1)

EndProcedure

Structure Server
Port.w
Ausgabe.w
EndStructure 
Global NewList Server.Server() 

OpenWindow(1,0,0,400,300,"Serversuche", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
 CreateGadgetList(WindowID(1))
 ButtonGadget(2,10,10,100,20,"Ports")
 ButtonGadget(3,110,10,100,20,"Server")
  EditorGadget(1, 35, 35, 360, 230, #PB_Editor_ReadOnly)
Port1 = 0
Port2 = 1
Ausgabe("==========")
Ausgabe("SERVERSUCHE...")

Repeat 
EventID = WindowEvent()
  If EventID = #PB_Event_CloseWindow
    quit = 1
  EndIf
 If EventID = #PB_Event_Gadget 
    If EventGadget()=2 
    Ausgabe("Port1 : "+Str(Port))
    EndIf
    If EventGadget()=3 
    Ausgabe("Anzahl an gefundenen Server: "+Str(CountList(Server())))
    
    EndIf
   EndIf 
   
     Client = OpenNetworkConnection("127.0.0.1", Port)
        If Client
         AddElement(Server())
         Server()\Port = Port 
        endif 

  Port + 1
        
    
 
 



 
 ForEach Server()

 If Server()\Ausgabe = 0
 Ausgabe("Server gefunden! Port: "+Str(Server()\Port))
 Server()\Ausgabe = 1
 EndIf 

 Next 
 Delay(100)
   
   Until quit = 1 
Mein Problem ist, dass die Server nicht gefunden werden, bzw einfach Übersprungen werden.

Ich bin Dankbar für jede Hilfe.

Verfasst: 05.01.2008 22:25
von STARGÅTE
auf der ClientSeite werden doch überhaupt keine Ports durchsucht :?

du machst nur eine OpenNetworkConnection() die VOR der schleife ist
ich denke mal das sollte in die Schleife.

Außerdem solltest du immer Port + 1 machen , du hingegen machst nur + 1 wenn es keine verbindung gibt, wenn ja bleibt der Port wie er ist

Verfasst: 06.01.2008 13:25
von Milchshake
Habe jetzt mal den Code umgeschrieben.
Aber plötzlich findet er Server die ich gar nicht erstellt habe :o
Gibts es irgentwelche "vorgefertigten" Ports, die von Windows. ect benutzt werden?

Und ach ja, gibt es eine bessere Methode Server zu suchen, bzw. zu finden?

Verfasst: 06.01.2008 15:04
von DarkDragon
Milchshake hat geschrieben:Habe jetzt mal den Code umgeschrieben.
Aber plötzlich findet er Server die ich gar nicht erstellt habe :o
Gibts es irgentwelche "vorgefertigten" Ports, die von Windows. ect benutzt werden?

Und ach ja, gibt es eine bessere Methode Server zu suchen, bzw. zu finden?
1. Ja, aber welche Ports weiß ich gerade nicht.
2. Broadcasting ist die gängigste Methode um Server im LAN Netzwerk zu finden.

Verfasst: 06.01.2008 16:01
von Milchshake
1. Ok, danke ;)

2. Kannst du mir die Methode Broadcasting genauer erklären, weil Google gibt mir nur die Links zu Video Broadcasting usw.

Verfasst: 06.01.2008 16:09
von Andreas_S

Verfasst: 06.01.2008 16:55
von DarkDragon
Bei Broadcasting sendest du einfach eine Nachricht an eine allgemeine Broadcast-Adresse (Dahinter sitzt aber genau genommen niemand). Jeder Netzwerkteilnehmer nimmt sie dann einfach entgegen.

http://de.wikipedia.org/wiki/Broadcasting

Verfasst: 06.01.2008 17:01
von Milchshake
Ja, und das geht auch über LAN?

Habs mir gerade geladen und sitze an der Readme^^

Verfasst: 06.01.2008 17:10
von Andreas_S
NUR über lan...