Seite 1 von 1

Network server cpu last

Verfasst: 20.02.2011 16:55
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   




Re: Network server cpu last

Verfasst: 20.02.2011 17:06
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 

Re: Network server cpu last

Verfasst: 20.02.2011 21:04
von bastibasti
Danke.

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