Voor een intern projectje moet ik 16 keyboards aan 1 pc hangen en al die input naar eigen inputveld in flash (mx 2004) sturen.
Op zich was dat geen probleem mbv een XMLSocketServer (zonder XML natuurlijk).
De code daarvoor had ik al 2 jaar liggen maar door er opnieuw naar te kijken begreep ik iets niet:
NIO sockets gebruiken select() en 1 Thread voor quasi alle throughput. Nu kun je mooi luisteren naar Accept / Read (er is iets aangekomen) / Write.
Die laatste gebruik ik niet. En ik vraag me af of dat wel 'proper' is. Volgens de spec als je SocketChannel.write(...) doet geeft ie terug hoeveel ie er 'geschreven' (ik neem aan dat dat niet gelijk is aan het verstuurde bytes maar gewoon hoeveel ie naar zijn interne (native) buffer heeft geschreven.
Wat ik echter nooit nakijk is dat ie wel alles heeft geschreven. Ik heb nog geen probleem hiermee ondervonden - data is tamelijk klein maar wel heel veel packets.
Nu vraag ik me af of ik die write() in feite moet doen in de select() clause enkel en alleen als die OP_WRITE aanstaat (en deze aanzetten wanneer er iets te schrijven valt).
Ik heb geen enkele online demo code gezien die dit doet maar aangezien de select() tamelijk typisch concept is vraag ik me af of andere (c / php / ...) servers die wel anders oplossen? (ie er rekening mee houden en if zo - waar).
Beetje vreemde vraag omdat ik daar opzich nog geen problemen mee heb gehad, maar nu ik deze code wil gebruiken voor een online multiplayer 'carcasonne' - type game (met vele players) verwacht ik het probleem wel.
Op zich was dat geen probleem mbv een XMLSocketServer (zonder XML natuurlijk).
De code daarvoor had ik al 2 jaar liggen maar door er opnieuw naar te kijken begreep ik iets niet:
NIO sockets gebruiken select() en 1 Thread voor quasi alle throughput. Nu kun je mooi luisteren naar Accept / Read (er is iets aangekomen) / Write.
Die laatste gebruik ik niet. En ik vraag me af of dat wel 'proper' is. Volgens de spec als je SocketChannel.write(...) doet geeft ie terug hoeveel ie er 'geschreven' (ik neem aan dat dat niet gelijk is aan het verstuurde bytes maar gewoon hoeveel ie naar zijn interne (native) buffer heeft geschreven.
Wat ik echter nooit nakijk is dat ie wel alles heeft geschreven. Ik heb nog geen probleem hiermee ondervonden - data is tamelijk klein maar wel heel veel packets.
Nu vraag ik me af of ik die write() in feite moet doen in de select() clause enkel en alleen als die OP_WRITE aanstaat (en deze aanzetten wanneer er iets te schrijven valt).
Ik heb geen enkele online demo code gezien die dit doet maar aangezien de select() tamelijk typisch concept is vraag ik me af of andere (c / php / ...) servers die wel anders oplossen? (ie er rekening mee houden en if zo - waar).
Beetje vreemde vraag omdat ik daar opzich nog geen problemen mee heb gehad, maar nu ik deze code wil gebruiken voor een online multiplayer 'carcasonne' - type game (met vele players) verwacht ik het probleem wel.