probleme mit nem Server in einem Komplexen Progrämchen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
captain third
Beiträge: 194
Registriert: 12.12.2004 13:14
Kontaktdaten:

probleme mit nem Server in einem Komplexen Progrämchen

Beitrag von captain third »

ich hab mir mal gedacht jetzt mach ich mal etwas schwereres...naja und da war mein Server natürlich mitbei :mrgreen:

nun zum Problem,mein Server wird aktiviert durch des Anklicken eines "Panels",naja und so fängt alles an,dann bleibt mein ganzes program hängen,aber der debuger meldet nix,versteh ich net,naja guggts euch an,und bitte helft mir :(

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_1
  #Button_2
  #Button_3
  #Button_4
  #Button_5
  #Text_0
  #Button_6
  #Button_7
  #Button_8
  #Text_1
  #Panel_0
  #Button_9
  #Button_10
  #Button_11
  #Hyperlink_0
  #Hyperlink_1
  #Hyperlink_2
  #Hyperlink_3
  #Hyperlink_4
  #Image_1
  #Button_13
  #Button_14
  #Button_15
  #Button_16
  #Button_17
  #Hyperlink_5
  #Hyperlink_7
  #Hyperlink_9
  #Button_18
  #String_0
  #Editor_0
  #Senden
EndEnumeration

;- Fonts
;
Global FontID1
FontID1 = LoadFont(1, "Modern", 16, #PB_Font_Bold)
;- Image Plugins

;- Image Globals
Global Image0

;- Catch Images
Image0 = CatchImage(0, ?Image0)

;- Images
DataSection
Image0:
  IncludeBinary "C:\Eigene Dateien\Eigene Bilder\Welcome Third.bmp"
EndDataSection

  If OpenWindow(#Window_0, 232, 54, 600, 300,  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "Admin")
    If CreateGadgetList(WindowID())
      ButtonGadget(#Button_1, 10, 20, 140, 40, "Server", #PB_Button_Default)
      GadgetToolTip(#Button_1, "Chat Server v.0.5")
      SetGadgetFont(#Button_1, FontID1)
      ButtonGadget(#Button_2, 10, 70, 140, 40, "Client", #PB_Button_Default)
      GadgetToolTip(#Button_2, "Chat Client v.1.9.0.9")
      SetGadgetFont(#Button_2, FontID1)
      ButtonGadget(#Button_3, 10, 120, 140, 40, "HomePlanet", #PB_Button_Default)
      GadgetToolTip(#Button_3, "HomePlanet")
      SetGadgetFont(#Button_3, FontID1)
      ButtonGadget(#Button_4, 10, 170, 140, 40, "Pure basic", #PB_Button_Default)
      GadgetToolTip(#Button_4, "Pure Basic Compiler")
      SetGadgetFont(#Button_4, FontID1)
      ButtonGadget(#Button_5, 10, 220, 140, 40, "PB-Designer", #PB_Button_Default)
      GadgetToolTip(#Button_5, "Pure Basic Visual Designer")
      SetGadgetFont(#Button_5, FontID1)
      TextGadget(#Text_0, 30, 0, 100, 20, "Anwendungen", #PB_Text_Center)
      ButtonGadget(#Button_6, 440, 20, 140, 40, "Server", #PB_Button_Default)
      GadgetToolTip(#Button_6, "Script für den Server 0.5")
      SetGadgetFont(#Button_6, FontID1)
      ButtonGadget(#Button_7, 440, 70, 140, 40, "Client", #PB_Button_Default)
      GadgetToolTip(#Button_7, "Script für den Client 1.9.0.9")
      SetGadgetFont(#Button_7, FontID1)
      ButtonGadget(#Button_8, 440, 120, 140, 40, "Admintool", #PB_Button_Default)
      GadgetToolTip(#Button_8, "Script für das AdminTool")
      SetGadgetFont(#Button_8, FontID1)
      TextGadget(#Text_1, 460, 0, 100, 20, "Scripts", #PB_Text_Center)
      ImageGadget(#Image_1, 160, 20, 270, 90, Image0)
      StringGadget(#String_0, 160, 270, 270, 20, "")
      ButtonGadget(#Senden, 440, 270, 70, 20, "Senden", #PB_Button_Default)
      GadgetToolTip(#Senden, "Naja dein Text muss ja schlieslich auch gesendet werdn...")
      
      ;- Panel0
      PanelGadget(#Panel_0, 160, 120, 270, 140)
      AddGadgetItem(#Panel_0, -1, "Ordner")
      ButtonGadget(#Button_9, 8, 18, 100, 20, "Eigene Dateien", #PB_Button_Default)
      ButtonGadget(#Button_10, 8, 38, 100, 20, "Pure Basic", #PB_Button_Default)
      ButtonGadget(#Button_11, 8, 58, 100, 20, "Clonk Planet", #PB_Button_Default)
      AddGadgetItem(#Panel_0, -1, "InternetLinks")
      HyperLinkGadget(#Hyperlink_0, 8, 8, 80, 20, "CCAN", RGB(0, 0, 0))
      GadgetToolTip(#Hyperlink_0, "www.ccan.de")
      HyperLinkGadget(#Hyperlink_1, 8, 28, 70, 20, "Pure Bord", RGB(0, 0, 0))
      GadgetToolTip(#Hyperlink_1, "www.pureboard.de")
      HyperLinkGadget(#Hyperlink_2, 8, 48, 80, 20, "Robsite", RGB(0, 0, 0))
      GadgetToolTip(#Hyperlink_2, "www.robsite.de")
      HyperLinkGadget(#Hyperlink_3, 8, 68, 80, 20, "Knuddels", RGB(0, 0, 0))
      GadgetToolTip(#Hyperlink_3, "www.Knuddelz.de")
      HyperLinkGadget(#Hyperlink_4, 8, 88, 93, 20, "Eigene Homepage", RGB(0, 0, 0))
      GadgetToolTip(#Hyperlink_4, "www.mm.co9.de")
      HyperLinkGadget(#Hyperlink_5, 118, 8, 80, 20, "Pure-Area", RGB(0, 0, 0))
      GadgetToolTip(#Hyperlink_5, "www.Pure-area.net")
      HyperLinkGadget(#Hyperlink_7, 118, 28, 80, 20, "Clonk", RGB(0, 0, 0))
      GadgetToolTip(#Hyperlink_7, "www.clonk.de")
      HyperLinkGadget(#Hyperlink_9, 118, 48, 80, 20, "Neopets", RGB(0, 0, 0))
      GadgetToolTip(#Hyperlink_9, "www.Neopets.de")
      AddGadgetItem(#Panel_0, -1, "Weitere Anwendungen")
      ButtonGadget(#Button_13, 8, 8, 90, 20, "Trillian", #PB_Button_Default)
      ButtonGadget(#Button_14, 8, 28, 90, 20, "Sygate-Firewall", #PB_Button_Default)
      ButtonGadget(#Button_15, 8, 48, 90, 20, "Clonk Planet", #PB_Button_Default)
      ButtonGadget(#Button_16, 8, 68, 90, 20, "Soldat", #PB_Button_Default)
      ButtonGadget(#Button_17, 8, 88, 90, 20, "Emule", #PB_Button_Default)
      ButtonGadget(#Button_18, 148, 8, 90, 20, "Wecker", #PB_Button_Default)
      GadgetToolTip(#Button_18, "Der wecker,der alle weckt xD")
      AddGadgetItem(#Panel_0, -1, "Server")
      EditorGadget(#Editor_0, 8, 8, 250, 100)
      CloseGadgetList()
      GadgetToolTip(#Panel_0, "Jedemenge Ordner zum schnellzugriff")

      
;-------------------------------------------------------------------------- 
 
    
     Repeat
     EventID = WaitWindowEvent()
     If EventID = #PB_Event_CloseWindow 
       Quit = 1
     EndIf
     If EventID = #PB_Event_Gadget
      If EventGadgetID()=#Button_1
        RunProgram("C:\WINDOWS\Desktop\Chat-Server1.0.exe") 
      EndIf
      If EventGadgetID()=#Button_2
       RunProgram("C:\WINDOWS\Desktop\Chat-Client v.1.9.0.9.exe")
      EndIf
      If EventGadgetID()=#Button_3
       RunProgram("C:\Programme\Homeplanet\HPLANET.EXE")
      EndIf
      If EventGadgetID()=#Button_4
       RunProgram("C:\Programme\PureBasic\PureBasic.exe")
      EndIf
      If EventGadgetID()=#Button_5
       RunProgram("C:\Programme\PureBasic\Visual Designer.exe")
      EndIf
      If EventGadgetID()=#Button_6
       RunProgram("C:\Programme\PureBasic\eigene Dateien\Test-conoleSERVER.pb")
      EndIf
      If EventGadgetID()=#Button_7
       RunProgram("C:\Programme\PureBasic\eigene Dateien\Testclient1.9.0.8.pb")
      EndIf
      If EventGadgetID()=#Button_8
       RunProgram("C:\Programme\PureBasic\eigene Dateien\TestProgramm(Admintool).pb")
      EndIf
      If EventGadgetID()=#Hyperlink_0
       RunProgram("www.ccan.de") 
      EndIf
      If EventGadgetID()=#Hyperlink_1
       RunProgram("www.pure-board.de")
      EndIf
      If EventGadgetID()=#Hyperlink_2
       RunProgram("www.robsite.de")
      EndIf
      If EventGadgetID()=#Hyperlink_3
       RunProgram("www.knuddelz.de")
      EndIf
      If EventGadgetID()=#Hyperlink_4
       RunProgram("www.mm.co9.de")
      EndIf
      If EventGadgetID()=#Hyperlink_5
       RunProgram("www.pure-area.net")
      EndIf
      If EventGadgetID()=#Hyperlink_7
       RunProgram("www.clonk.de")
      EndIf
      If EventGadgetID()=#Hyperlink_9
       RunProgram("www.neopets.de")
      EndIf
      If EventGadgetID()=#Button_13
       RunProgram("C:\Programme\Trillian\trillian.exe")
      EndIf
      If EventGadgetID()=#Button_14
       RunProgram("C:\Programme\Sygate\SPF\Smc.exe")
      EndIf
      If EventGadgetID()=#Button_15
       RunProgram("C:\Programme\ClonkPlanet\Planet.exe")
      EndIf
      If EventGadgetID()=#Button_16
       RunProgram("C:\Soldat\Soldat.exe")
      EndIf
      If EventGadgetID()=#Button_17
       RunProgram("C:\Programme\eMule.de\emule.exe")
      EndIf
      If EventGadgetID()=#Button_18
       RunProgram("C:\Programme\Wecker 2.2\wecker220.exe")
      EndIf
;---------------------------------SERVER-------------------------------------      
      If EventGadgetID()=#Panel_0
       NewList Client.l()
       InitNetwork() 
       CreateNetworkServer(600) 
       AddGadgetItem(#Editor_0,-1,"Der Server wurde erfolgreich erstellt")

       Repeat
         If EventID = #PB_Event_CloseWindow 
          quitii = 1 
         EndIf 
        Buffer = AllocateMemory(1024)
        If EventID = #PB_Event_Gadget 
         If EventGadgetID()=#Senden 
          Text$ = GetGadgetText(#String_0) 
          ForEach Client() 
          SendNetworkString(Client(), "!!!!SERVER!!!! :" +Text$) 
          AddGadgetItem(#Editor_0, -1,"SERVER "+Text$) 
          Next 
          SetGadgetText(#String_0, "") 
         EndIf 
        EndIf 
       If EventID = 0 
        Delay(100) 
      
       EndIf 
        ;Server 
  SEvent.l = NetworkServerEvent() 
  
  ;If SEvent 
  
  ClientID = NetworkClientID() 
  
  Select SEvent 
    
    Case 1 
      AddGadgetItem(#Editor_0, -1,"ein neuer Client ist online") 
      AddElement(Client()) 
      Client() = ClientID 
               
    Case 2 
      ReceiveNetworkData(ClientID, Buffer, 1000) 
      AddGadgetItem(#Editor_0, -1, PeekS(Buffer)) 
      ForEach Client() 
        If Client() <> ClientID 
          SendNetworkString(Client(), PeekS(Buffer)) 
        EndIf 
      Next 
      
      Case 3
      ;noch nix
      
      Case 4 
      AddGadgetItem(#Editor_0, -1,"Ein Client hat den Server verlassen") 
      EndSelect 
  
      FreeMemory(Buffer)
      Until quitii = 1

;----------------------------------------------------------------------------      
      
      EndIf 
     EndIf       
    Until Quit = 1
  EndIf
 End
EndIf
:shock: jetzt merk ich erst wieviel das ist :mrgreen:
RaVeN99
Beiträge: 310
Registriert: 29.08.2004 15:26
Wohnort: Weiden i.d.OPF
Kontaktdaten:

Beitrag von RaVeN99 »

Hmmm... kleiner tipp... schau dir mal an wie oft du repeat verwendest...
Bau das ganze so um dass dein server ohne zweite repeat schleife funzt, dann sollte das ganze hinahun...
Ahja, initialisierungen von diversen libraries, buffers etc würde ich entweder ganz zu beginn machen oder sobald das fenster geöffnet wurde - aber das nur nebenher...
Wenn du mal sehen willst wie ein kleiner chat als applikation geschrieben wird kann ich dir notfalls (finde grade den link zum download nicht mehr) den PBChat per e-mail schicken... der verdeutlicht das ganze recht schön, und an diesem beispiel kann man einiges lernen...


Mfg
RaVeN
AMD Athlon64 3000+, 1024MB DDR-RAM, Geforce 8600GT, WinXP SP2, DirectX 9.0c, PureBasic 3.94
Benutzeravatar
captain third
Beiträge: 194
Registriert: 12.12.2004 13:14
Kontaktdaten:

Beitrag von captain third »

mmmh,"cant initializ...blablabla"

mmmh naja,irgendwie hatz net janz so hin,egal ich versuchs nomma auf eigene Faust
RaVeN99
Beiträge: 310
Registriert: 29.08.2004 15:26
Wohnort: Weiden i.d.OPF
Kontaktdaten:

Beitrag von RaVeN99 »

Was haut nicht ganz hin und mit welchem code?
Diverse sachen kannste bei applikationen nur initialisieren sobald ein window offen ist - hab ich zumindest die erfahrung gemacht...
AMD Athlon64 3000+, 1024MB DDR-RAM, Geforce 8600GT, WinXP SP2, DirectX 9.0c, PureBasic 3.94
Antworten