Network server cpu last

Anfängerfragen zum Programmieren mit PureBasic.
bastibasti
Beiträge: 13
Registriert: 20.02.2011 16:51

Network server cpu last

Beitrag von bastibasti »

Hi,

ich habe einen einfachen Netzwerkserver (größtenteils von den Examples) gebastelt, allerdings erzeugt die Loop volllast auf einem Thread.

Gibts da auch ne elegante Variante?

Code: Alles auswählen

If InitNetwork() = 0
  MessageRequester("Error", "Can't initialize the network !", 0)
  End
EndIf

Port = 65000
*Buffer = AllocateMemory(1000)

If CreateNetworkServer(0, Port)

 Repeat
   
    SEvent = NetworkServerEvent()

    If SEvent
    
      ClientID = EventClient()
      Select SEvent
          
        
        Case #PB_NetworkEvent_Data
          ReceiveNetworkData(ClientID, *Buffer, 1000)
          MessageRequester("Message",PeekS(*Buffer), 0)
          CloseNetworkConnection(ClientID)
          
      EndSelect
    EndIf
    
  Until Quit = 1 
  MessageRequester("PureBasic - Server", "Click to quit the server.", 0)
  CloseNetworkServer(0)
Else
  MessageRequester("Error", "Can't create the server (port in use ?).", 0)
EndIf
End   



Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Network server cpu last

Beitrag von STARGÅTE »

gib dem Server doch einfach eine Pause wnen er nix zu tun hat:

Code: Alles auswählen

Repeat
  Select NetworkServerEvent()
    Case #PB_NetworkEvent_Connect, #PB_NetworkEvent_File, #PB_NetworkEvent_Disconnect
      ; ...
    Case #PB_NetworkEvent_Data
      ReceiveNetworkData(EventClient(), *Buffer, 1000)
      MessageRequester("Message",PeekS(*Buffer), 0)
      CloseNetworkConnection(EventClient())
    Default 
      Delay(2)
  EndSelect
Until Quit = 1 
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
bastibasti
Beiträge: 13
Registriert: 20.02.2011 16:51

Re: Network server cpu last

Beitrag von bastibasti »

Danke.

Ich hätte nicht gedacht, das das so einfach umzusetzten ist. Hätte eher auf eine komplizierte Interruptroutine oder so getippt!
Antworten