Page 1 of 1

NetworkServerEvent(ServerID)

Posted: Fri Jan 28, 2011 11:29 pm
by rodego
Ok, I want obtain events only from selected server and ignore events from other servers. Is it posible to add optional argument to NetworkServerEvent function?

Example:

Code: Select all

ServerID=CreateNetworkServer(#PB_Any,2000)
OtherServerID=CreateNetworkServer(#PB_Any,2001)

Procedure ServerManager(SID)
  Repeat
    Select NetworkServerEvent(SID)
      ...
    EndSelect
  Forever
EndProcedure

CreateThread(@ServerManager(),ServerID) ; This thread process events from first server
CreateThread(@ServerManager(),OtherServerID) ; This thread process events from second server

P.S. On Windows network lib use Async, on Linux EPoll? Is it right?

P.P.S. Sorry for my bad english))

Re: NetworkServerEvent(ServerID)

Posted: Sun Jan 30, 2011 4:43 pm
by Joakim Christiansen
I would suggest you do this, but yes, it would be nice with the extra argument.

Code: Select all

Procedure server1manager(event,eventClient)
  Select event
    ...
  EndSelect
EndProcedure

Procedure server2manager(event,eventClient)
  Select event
    ...
  EndSelect
EndProcedure

Procedure networkManager(d)
  Repeat
    serverEvent = NetworkServerEvent()
    If serverEvent
      Select EventServer()
        Case server1
          server1manager(serverEvent,EventClient())
        Case server2
          server2manager(serverEvent,EventClient())
      EndSelect
    Else
      Delay(5)
    EndIf
  Until stopServers
EndProcedure

server1=CreateNetworkServer(#PB_Any,2000)
server2=CreateNetworkServer(#PB_Any,2001)

CreateThread(@networkManager(),0)

Re: NetworkServerEvent(ServerID)

Posted: Fri Apr 25, 2014 5:12 pm
by Niffo
rodego wrote:Ok, I want obtain events only from selected server and ignore events from other servers. Is it posible to add optional argument to NetworkServerEvent function?
+1000 !

The other function NetworkClientEvent() already has this parameter.
I am coding a library who has to be able to create a network server and manage the network events in a thread and i cannot cleanly do that because the main program already use NetWorkServeurEvent() in its main loop :-(