Server-Suche?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Milchshake
Beiträge: 166
Registriert: 30.01.2006 17:47
Wohnort: Zwischen dem Sessel und dem Computer

Server-Suche?

Beitrag 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.
Zuletzt geändert von Milchshake am 06.01.2008 13:24, insgesamt 3-mal geändert.
Hab jetzt PB 4.02
Muhahaha!!!!
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag 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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Milchshake
Beiträge: 166
Registriert: 30.01.2006 17:47
Wohnort: Zwischen dem Sessel und dem Computer

Beitrag 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?
Hab jetzt PB 4.02
Muhahaha!!!!
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Milchshake
Beiträge: 166
Registriert: 30.01.2006 17:47
Wohnort: Zwischen dem Sessel und dem Computer

Beitrag 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.
Hab jetzt PB 4.02
Muhahaha!!!!
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Milchshake
Beiträge: 166
Registriert: 30.01.2006 17:47
Wohnort: Zwischen dem Sessel und dem Computer

Beitrag von Milchshake »

Ja, und das geht auch über LAN?

Habs mir gerade geladen und sitze an der Readme^^
Hab jetzt PB 4.02
Muhahaha!!!!
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

NUR über lan...
Antworten