Server Startet nicht

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
MASH
Beiträge: 130
Registriert: 22.05.2005 17:43

Server Startet nicht

Beitrag von MASH »

Wenn ich mit diesem Code den Server starte und beende dann funktioniert alles. Starte ich den Server doppelt so sollte er mir eine fehlemeldung raus geben (In der Statusleiste feld1), das funktioniert auch wenn ich allerdings dann den Server beende (oder auch mehrmals beende) dann kann ich ihn nicht neu starten und ich muss das Programm erst beenden bevor ich den server starten kann. Weis jemand wie man das beheben kann?

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration

Enumeration
  #Frame3D_0
  #Button_0
  #Button_1
  #Text_0
  #ClientList
  #Button_2
EndEnumeration

Enumeration
  #StatusBar_1
EndEnumeration

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 360, 120, 227, 321,  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar , "Server")
    If CreateStatusBar(#StatusBar_1, WindowID())
      AddStatusBarField(115)
      AddStatusBarField(115)
      StatusBarText(#StatusBar_1, 0, "Willkommen")
      StatusBarText(#StatusBar_1, 1, "Status", #PB_StatusBar_Raised)
    EndIf
    
    If CreateGadgetList(WindowID())
      Frame3DGadget(#Frame3D_0, 5, 5, 215, 80, "Server Optionen")
      ButtonGadget(#Button_0, 15, 25, 95, 25, "Server Starten")
      ButtonGadget(#Button_1, 115, 25, 95, 25, "Server Beenden")
      TextGadget(#Text_0, 15, 95, 60, 15, "Client Liste")
      ListViewGadget(#ClientList, 10, 115, 200, 170)
      ButtonGadget(#Button_2, 15, 55, 95, 25, "Server Information")
      
    EndIf
  EndIf
EndProcedure

;LoadImage(0,"C:\Programme\PureBasic\VOIP\false.ico")
;LoadImage(1,"C:\Programme\PureBasic\VOIP\true.ico")


Open_Window_0()

;StatusBarIcon(0,1,UseImage(0))
start = 1
Repeat
  Event = WaitWindowEvent()
  If Event = #PB_EventGadget
    GadgetID = EventGadgetID()
    
    If GadgetID = #Button_0 ;Server Starten
      If InitNetwork() <> 0
        StatusBarText(0,0,"Starten...")
        If CreateNetworkServer(6832)
          StatusBarText(0,0,"Gestartet")
          ;StatusBarIcon(0,1,UseImage(1))
        Else
          StatusBarText(0,0,"Fehler 2")
        EndIf
      Else
        StatusBarText(0,0,"Fehler 1")
        ;StatusBarIcon(0,1,UseImage(0))
      EndIf
      start = 0
      
    ElseIf GadgetID = #Button_1 ;Server Beenden
      StatusBarText(0,0,"Beenden...")
      CloseNetworkServer()
      StatusBarText(0,0,"Beendet")
      ;StatusBarIcon(0,1,UseImage(0))
      start = 1
      
    ElseIf GadgetID = #Button_2 ;Server Information
      If InitNetwork() = 0
        MessageRequester("Server Information","Host Name:"+Chr(9)+"N/A"+Chr(9)+Chr(13)+"IP Adresse:"+Chr(9)+"N/A"+Chr(9)+Chr(13)+"Port:"+Chr(9)+Chr(9)+"N/A"+Chr(9),0|64)
      Else
        ExamineIPAddresses()
        Cu_Ip.s = IPString(NextIPAddress())
        Cu_Host.s = Hostname()
        CuPort = 6832
        MessageRequester("Server Information","Host Name:"+Chr(9)+Cu_Host.s+Chr(9)+Chr(13)+"IP Adresse:"+Chr(9)+Cu_Ip.s+Chr(9)+Chr(13)+"Port:"+Chr(9)+Chr(9)+Str(CuPort)+Chr(9),0|64)
      EndIf
    ElseIf GadgetID = #ClientList ;Client Liste
      Debug "GadgetID: #ClientList"
      
    EndIf
    EndIf
    If start = 0
    SEvent.l = NetworkServerEvent()
    If SEvent
      ClientID = NetworkClientID()
      Select SEvent
        
        Case 1  ;Client verbunden
        AddGadgetItem(#ClientList,0,Str(ClientID))
        StatusBarText(0,0,Str(CountGadgetItems(#ClientList)))
                
        Case 4  ;Client nicht verbunden
        For i = 0 To CountGadgetItems(#ClientList)
          If GetGadgetItemText(#ClientList,i,"") = Str(ClientID)
            RemoveGadgetItem(#ClientList,1)
          EndIf
        Next i
        StatusBarText(0,0,Str(CountGadgetItems(#ClientList)))
        
      EndSelect
    EndIf
    EndIf

  
Until Event = #PB_EventCloseWindow

End
Danke Mark S.
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Du initialisierst das Netzwerk mit jedem neuen Server. InitNetwork() sollte aber nur einmal am Anfang des Programmes verwendet werden.
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

den Fehler rauszuklamüsern hab ich kein bock
wir vermutlich an einer nicht ganz korrekten Abfrage des aktuellen Serverstatus' liegen.

Aber mit ff code geht's auch (ich hab die Knöpfe
entsprechend en/disabled)

Code: Alles auswählen

Enumeration 
  #Window_0 
EndEnumeration 

Enumeration 
  #Frame3D_0 
  #Button_0 
  #Button_1 
  #Text_0 
  #ClientList 
  #Button_2 
EndEnumeration 

Enumeration 
  #StatusBar_1 
EndEnumeration 

Procedure Open_Window_0() 
  If OpenWindow(#Window_0, 360, 120, 227, 321,  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar , "Server") 
    If CreateStatusBar(#StatusBar_1, WindowID()) 
      AddStatusBarField(115) 
      AddStatusBarField(115) 
      StatusBarText(#StatusBar_1, 0, "Willkommen") 
      StatusBarText(#StatusBar_1, 1, "Status", #PB_StatusBar_Raised) 
    EndIf 
    
    If CreateGadgetList(WindowID()) 
      Frame3DGadget(#Frame3D_0, 5, 5, 215, 80, "Server Optionen") 
      ButtonGadget(#Button_0, 15, 25, 95, 25, "Server Starten") 
      ButtonGadget(#Button_1, 115, 25, 95, 25, "Server Beenden") 
      TextGadget(#Text_0, 15, 95, 60, 15, "Client Liste") 
      ListViewGadget(#ClientList, 10, 115, 200, 170) 
      ButtonGadget(#Button_2, 15, 55, 95, 25, "Server Information") 
      
    EndIf 
  EndIf 
EndProcedure 

;LoadImage(0,"C:\Programme\PureBasic\VOIP\false.ico") 
;LoadImage(1,"C:\Programme\PureBasic\VOIP\true.ico") 


Open_Window_0() 
        DisableGadget(#Button_1,1)


;StatusBarIcon(0,1,UseImage(0)) 
start = 1 
Repeat 
  Event = WaitWindowEvent() 
  If Event = #PB_EventGadget 
    GadgetID = EventGadgetID() 
    
    If GadgetID = #Button_0 ;Server Starten 
      If InitNetwork() <> 0 
        StatusBarText(0,0,"Starten...") 
        DisableGadget(#Button_0,1)
        DisableGadget(#Button_1,0)

        If CreateNetworkServer(6832) 
          StatusBarText(0,0,"Gestartet") 
          ;StatusBarIcon(0,1,UseImage(1)) 
        Else 
          StatusBarText(0,0,"Fehler 2") 
        EndIf 
      Else 
        StatusBarText(0,0,"Fehler 1") 
        ;StatusBarIcon(0,1,UseImage(0)) 
      EndIf 
      start = 0 
      
    ElseIf GadgetID = #Button_1 ;Server Beenden 
        DisableGadget(#Button_0,0)
        DisableGadget(#Button_1,1)

      StatusBarText(0,0,"Beenden...") 
      CloseNetworkServer() 
      StatusBarText(0,0,"Beendet") 
      ;StatusBarIcon(0,1,UseImage(0)) 
      start = 1 
      
    ElseIf GadgetID = #Button_2 ;Server Information 
      If InitNetwork() = 0 
        MessageRequester("Server Information","Host Name:"+Chr(9)+"N/A"+Chr(9)+Chr(13)+"IP Adresse:"+Chr(9)+"N/A"+Chr(9)+Chr(13)+"Port:"+Chr(9)+Chr(9)+"N/A"+Chr(9),0|64) 
      Else 
        ExamineIPAddresses() 
        Cu_Ip.s = IPString(NextIPAddress()) 
        Cu_Host.s = Hostname() 
        CuPort = 6832 
        MessageRequester("Server Information","Host Name:"+Chr(9)+Cu_Host.s+Chr(9)+Chr(13)+"IP Adresse:"+Chr(9)+Cu_Ip.s+Chr(9)+Chr(13)+"Port:"+Chr(9)+Chr(9)+Str(CuPort)+Chr(9),0|64) 
      EndIf 
    ElseIf GadgetID = #ClientList ;Client Liste 
      Debug "GadgetID: #ClientList" 
      
    EndIf 
    EndIf 
    If start = 0 
    SEvent.l = NetworkServerEvent() 
    If SEvent 
      ClientID = NetworkClientID() 
      Select SEvent 
        
        Case 1  ;Client verbunden 
        AddGadgetItem(#ClientList,0,Str(ClientID)) 
        StatusBarText(0,0,Str(CountGadgetItems(#ClientList))) 
                
        Case 4  ;Client nicht verbunden 
        For i = 0 To CountGadgetItems(#ClientList) 
          If GetGadgetItemText(#ClientList,i,"") = Str(ClientID) 
            RemoveGadgetItem(#ClientList,1) 
          EndIf 
        Next i 
        StatusBarText(0,0,Str(CountGadgetItems(#ClientList))) 
        
      EndSelect 
    EndIf 
    EndIf 

  
Until Event = #PB_EventCloseWindow 

End
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
MASH
Beiträge: 130
Registriert: 22.05.2005 17:43

Beitrag von MASH »

Da hätte ich ja selbst dran dencken können die Knöpfe zu Dis bzw. Enablen :roll: .

Naja danke nochmals :D .

Mark S.
Antworten