Netværks server med multi socket funktion
Hej eksperter.Jeg sidder og vil lave en Multisocket server, dog har jeg svært ved og finde et ordenligt design.
min ide er og starte med 1 tråd til og acceptere nye sockets (listener socket)
---
Jeg gemmer derefter alle sockets i en trådsikret arrayliste, der også har session data på klienten (brugernavn, login dato, m.m)
hver gang listener tråden får et nyt opkald, add'er den så den nye socket til den trådsikret liste.
----
derfra bliver det så lidt et stort spørgsmålstegn for mig. min ide var at oprette en tråd for hver forbundet socket, hvor den læser i et evigt loop.
så hvis der er 20 klienter forbundet, er der 20 tråede der står og buldre løs i baggrunden.
----
alle reader trådende skriver så til en "queue" liste, hvor alle responses bliver skrevet til. (svar fra serveren)
----
en enkelt tråd behandler all svar fra "queue" listen, ved og skrive til den korrekte socket.
----
jeg vil trådsikre et List item,ved og bruge "block" på selve listen, og et manualresetevent i hver item i listen, der fortæller om dette item har en anden der læser fra det.
----
jeg regner med og bruge NetworkStream til både at læse og skrive fra.
mit spørgsmål er om dette er en god ide, eller om jeg skal forbedre mit design?
er networkstream trådsikret? kan man både læse og skrive med networkstream på samme tid, eller skal man sikre sige at dette ikke sker? (ManualResetEvent isWriting, ManualResetEvent isReading)
er der eventuelt en bedre måde at tråde is Reader? jeg er lidt bange for at en reader blocker, og serveren ikke længere modtager data fra andre klienter, før en socket giver timeout.
ideer er velkomen.