String
Erfahrenes Mitglied
Hallo zusammen,
ich bin gerade dabei einen Multi Socket Server mit VB.NET und Threads zu erstellen allerdings stehe ich dort vor einigen oder gar vielen Problemen.
Als Info: Der Server soll nachher als Mutli-Game Server dienen. Mit einigen (1 - 20 vllt) Spielern pro Server - wenn mehr möglich natürlich auch gerne mehr
) Die Clienten werden alles Flash-Anwendungen sein.
So nehme ich derzeit eine Verbindung an:
Habe ich das soweit schonmal richtig verstanden oder bin ich ab da schon auf dem falschen Dampfer?
In dem "Sub" clientThreads, welches ja quasi kopiert und immer wieder ausgeführt wird, wird der Stream gelesen, oder?
Doch nun stehe ich vor einigen Fragen:
Wie lese ich dem Stream aus? Ich könnte ihn an der Thread übergeben
und den Sub ala
aufrufen.
Aber dann habe ich das Problem das ich nicht die Nachricht die in Thread A empfangen wird an Thread B - Z zu senden. Desweiteren müssen die Clienten ja irgendwo "gespeichert" werden. Vielleicht in einem Array? Aber gibt es dort nicht eine schönere Möglichkeit?
Also irgendwie verstehe ich dieses "MULTI-SERVER" ding noch nicht so ganz. Kann mir dort mal jemand eine gescheite Übersicht Posten, wie das Ablaufen muss? Codes brauche ich eig. nicht, dass bekomm ich noch selber her, aber den Ablauf, verstehe ich nicht so ganz.
Eine einfache Server - Client verbindung bekomme ich Problemlos hin. Sobald aber mehrere Clienten auf einen Server zugreifen sollen und untereinander kommunizieren sollen hat sich das bei mir erledigt.
In meinen hunderten Versuchen hatte ich bisher eine "Struktur" die gelaufen ist, allerdings nicht das Gelbe vom Ei ist
- Server Starten
- Client verbindung startet Thread und übergibt Client-Stream
- Bei Client-Verbindung wird in ein Array der Stream vom Clienten gespeichert.
- Thread:
-- Mit Loop stream auslesen
-- Empfangenen Text in ne Listbox (lol)
- Timer:
-- Listbox (mit empfangenen Text) durchlaufen und an andere Clienten weiterleiten die im Array gespeichert sind (...)
Das gab allerdings mehrere Probleme z.b. wenn der Client einfach geschlossen wurde aber nicht das "exit" kommando gesendet hat. Dann wurde er z.b. nicht aus dem Array gelöscht und es wurde die ganze zeit versucht weiter zu senden..
Also, ich bin für jeden tip SEHR dankbar.
Zum Thema Google: Ich habe schon viele hunderte Seiten gefunden. Habe auch schon schöne Code-Beispiele gefunden. Allerdings waren die meist ohne Erklärung oder absolut unverständlich.
Gruß
string
ich bin gerade dabei einen Multi Socket Server mit VB.NET und Threads zu erstellen allerdings stehe ich dort vor einigen oder gar vielen Problemen.
Als Info: Der Server soll nachher als Mutli-Game Server dienen. Mit einigen (1 - 20 vllt) Spielern pro Server - wenn mehr möglich natürlich auch gerne mehr

So nehme ich derzeit eine Verbindung an:
Code:
client = Server.AcceptTcpClient()
Dim myThread As New Thread(AddressOf clientThreads)
myThread.Start()
Habe ich das soweit schonmal richtig verstanden oder bin ich ab da schon auf dem falschen Dampfer?
In dem "Sub" clientThreads, welches ja quasi kopiert und immer wieder ausgeführt wird, wird der Stream gelesen, oder?
Doch nun stehe ich vor einigen Fragen:
Wie lese ich dem Stream aus? Ich könnte ihn an der Thread übergeben
Code:
myThread.Start(stream)
Code:
private sub clientThreads(byval stream as networkstream)
Aber dann habe ich das Problem das ich nicht die Nachricht die in Thread A empfangen wird an Thread B - Z zu senden. Desweiteren müssen die Clienten ja irgendwo "gespeichert" werden. Vielleicht in einem Array? Aber gibt es dort nicht eine schönere Möglichkeit?
Also irgendwie verstehe ich dieses "MULTI-SERVER" ding noch nicht so ganz. Kann mir dort mal jemand eine gescheite Übersicht Posten, wie das Ablaufen muss? Codes brauche ich eig. nicht, dass bekomm ich noch selber her, aber den Ablauf, verstehe ich nicht so ganz.
Eine einfache Server - Client verbindung bekomme ich Problemlos hin. Sobald aber mehrere Clienten auf einen Server zugreifen sollen und untereinander kommunizieren sollen hat sich das bei mir erledigt.
In meinen hunderten Versuchen hatte ich bisher eine "Struktur" die gelaufen ist, allerdings nicht das Gelbe vom Ei ist

- Server Starten
- Client verbindung startet Thread und übergibt Client-Stream
- Bei Client-Verbindung wird in ein Array der Stream vom Clienten gespeichert.
- Thread:
-- Mit Loop stream auslesen
-- Empfangenen Text in ne Listbox (lol)
- Timer:
-- Listbox (mit empfangenen Text) durchlaufen und an andere Clienten weiterleiten die im Array gespeichert sind (...)
Das gab allerdings mehrere Probleme z.b. wenn der Client einfach geschlossen wurde aber nicht das "exit" kommando gesendet hat. Dann wurde er z.b. nicht aus dem Array gelöscht und es wurde die ganze zeit versucht weiter zu senden..
Also, ich bin für jeden tip SEHR dankbar.
Zum Thema Google: Ich habe schon viele hunderte Seiten gefunden. Habe auch schon schöne Code-Beispiele gefunden. Allerdings waren die meist ohne Erklärung oder absolut unverständlich.
Gruß
string