![]() |
|
|
|||||||
| Netzwerkprogrammierung Fragen zu Client-/Server-Programmierung sowie zu verteilten Anwendungen (RMI, CORBA etc.) |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Neuer Benutzer
Bit
Registriert seit: 12.03.2010
Beiträge: 3
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
|
Moin,
ich wollte ein Chat/Spiele-Server schreiben, bei dem sich mehrere User verbinden können. Allerdings finde ich nur Beispiele wie man für jeden User einen neuen Thead erstellt. Das will ich auf jeden Fall vermeiden, da das System für sehr viele User ausgelegt sein soll. Von daher die Frage, wie man das am Besten realisieren könnte. Ich hatte mir vorgestellt, dass man alle Sockets ja einfach in ein Array packen könnte und dann im Threadpool Aufgaben packen kann, sobald eine Nachricht ankommt. Jedoch komme ich genau da nicht weiter. Wie finde ich denn heraus, wann eine Nachricht auf einem Socket ankommt
|
|
|
|
| #2 (permalink) | |
|
Stammbenutzer
Team JCupGames
Kilobyte Registriert seit: 20.03.2008
Beiträge: 377
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
|
Du könntest dir mal NIO ansehen.
__________________
Es gibt keine fehlerhaften Programme, ein Programm macht genau das was der Programmierer programmiert hat |
|
|
|
| #3 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 04.12.2007
Beiträge: 607
Abgegebene Danke: 17
Erhielt 11 Danke für 11 Beiträge
|
dann verwende UDP statt TCP ... die Beispiele verwenden meistens TCP und da brauchst Du für jeden User einen Thread ... TCP ist allerdings sicherer als UDP (von der Übertragung her)
|
|
|
|
| #4 (permalink) | |
|
Stammbenutzer
Viertel Gigabyte
Registriert seit: 18.11.2004
Beiträge: 4.571
Abgegebene Danke: 6
Erhielt 42 Danke für 42 Beiträge
|
*meine signatur mal anschauen kannst*
__________________
SIMON, das einfach bessere RMI ... -> Projektseite -> Warum SIMON besser ist als RMI -> Support-Forum |
|
|
|
| Danke sagt: |
chineseleper (12.03.2010)
|
| #5 (permalink) | |
|
Neuer Benutzer
Bit
Themenstarter
Registriert seit: 12.03.2010
Beiträge: 3
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
|
Ich habe vergessen zu erwähnen, dass die Clients nicht nur in Java geschrieben sind. Es sollen auch Flashclients bedient werden, hier ist nur TCP möglich mit null-byte terminierung. apache mina scheint aber glaube das zu sein, was ich benutzen möchte? sehe ich das richtig?
|
|
|
|
| #6 (permalink) | |||||||||||||||||||
|
Stammbenutzer
Viertel Gigabyte
Registriert seit: 18.11.2004
Beiträge: 4.571
Abgegebene Danke: 6
Erhielt 42 Danke für 42 Beiträge
|
Aber es würde sich mit deinen Anforderungen decken ...- Alex
__________________
SIMON, das einfach bessere RMI ... -> Projektseite -> Warum SIMON besser ist als RMI -> Support-Forum |
||||||||||||||||||
|
|
|
||||||||||||||||||
| #7 (permalink) | |
|
Java-Forum Team
IRC-Operator (Java-Chat)
Moderator Registriert seit: 17.08.2007
Beiträge: 3.954
Abgegebene Danke: 2
Erhielt 153 Danke für 149 Beiträge
|
Wie was er benutzen möchte? Oo
__________________
Lycia: Lycia (formerly known as Java XmlParser) is an event-based parser framework for being used on top of different structured datasources such as XML http://code.google.com/p/lycia/ |
|
|
|
| #8 (permalink) | |
|
Neuer Benutzer
Bit
Themenstarter
Registriert seit: 12.03.2010
Beiträge: 3
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
|
na ob es noch andere ähnliche lösungen gibt wie mina. Aber so wie ich das sehe ist mina da sehr passend. danke tux für den tipp bzgl. simon, dass ja auch mina nutzt.
|
|
|
|
| #9 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 17.04.2008
Beiträge: 340
Abgegebene Danke: 4
Erhielt 6 Danke für 6 Beiträge
|
Nur am Rande... Es gibt noch weitere NIO Frameworks die auch sehr gut sind.
Netty 3 z.B. ist sogar nen Ticken schneller als Mina laut dem Autor, der übrigens beide Frameworks geschrieben hat. Ansonsten xSockets. Kannst dir ja mal die 3 anschauen und dann entscheiden, was dir besser gefällt ![]() Ich persönlich bevorzuge inzwischen Netty3, da es ein sehr viel besseres und performanteres Buffersystem verwendet als Mina. Aber vlt. ändert sich das auch wieder mit Mina 3. Netty und Mina sind ansonsten relativ ähnlich, da sie wie gesagt vom selben Autor sind... Gruß, Chris
__________________
Wer C++ kann, kann auch Java |
|
|
|
| #10 (permalink) | |
|
Stammbenutzer
Viertel Gigabyte
Registriert seit: 18.11.2004
Beiträge: 4.571
Abgegebene Danke: 6
Erhielt 42 Danke für 42 Beiträge
|
Ein performanteres Buffersystem?
Netty kocht auch nur mit Wasser. Mehr wie NIO's ByteBuffer geht nicht. Beide Frameworks können, soweit ich das jetzt gesehen hab ein Gigabit Netzwerk gut ausreizen. Wo soll da noch ein Performanceunterschied liegen? Wenn ich mir deren Messung anschaue, dann liegen da weniger als 5ms dazwischen. Ich würde mal sagen dass für über 90% der Fälle diese marinalen Unterschiede nicht von belang sind. Auch muss man dazu sagen dass keiner einen Test veröffentlichen würde der die eigene Library schlechter dastehen lässt. Auch wenn die Messergebnisse "transparent" sind, sollte man das bei solchen Messungen im Hinterkopf behalten. Auch beinhaltet der Test eine "Fehlerquelle": Die DB wird hier scheinbar mitgetestet. Wenn ich so einen test mache, dann schau ich dass ich alle möglichen Seiteneffekte außen vor lasse. Ich will MINA jetzt nicht verteidigen. Ich arbeite mit beiden. Ich stelle nur manchmal Testverfahren in Frage. Einen wirklichen Unterschied konnte ich noch nicht feststellen... - Alex P.S. Netty scheint den "performance-boost" durch ein besseres queue-handling beim Senden zu erreichen. Mehr nicht.
__________________
SIMON, das einfach bessere RMI ... -> Projektseite -> Warum SIMON besser ist als RMI -> Support-Forum |
|
|
|
| #11 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 17.04.2008
Beiträge: 340
Abgegebene Danke: 4
Erhielt 6 Danke für 6 Beiträge
|
Zu deiner Anzweifelung am besseren Buffersystem (Was ürbigens viel auf alten Rechnern ausmacht):
Netty3 definiert ein eigenes Interface ChannelBuffer. Ein dynamischer Buffer ist eine Liste aus Buffern. Du kannst sogar eine List von Buffern dann auf einem Mal senden, ohne vorher aus diesen 3 oder Buffern einen einzigen zu machen. DAs spart Zeit und ist auch perfekter. Stell dir vor du hast 8192 bytes Daten. Jetzt willste noch nen Header davor setzen. Bei Mina musste erneut umkopieren. bei Netty nicht. Ich hab keine Ahnung wo der Performancetest herkommt. Aber wenns der Autor sagt, sollte es schon stimmen... Netty vs Apache MINA - Stack Overflow Der Autor heißt "Trustin Lee" und beschreibt Mina mit verhältnismäßiger "poor performance" ... Alles in allem, ist Netty wohl ein Framework bei dem auf die ganzen kleinen Probleme von Mina explizit eingegangen ist. Gruß, Chris PS: Aber groß ist der Unterschied wohl nicht. Jedem das was einem besser gefällt. Andererseits ist Netty sehr viel besser dokumentiert und hat viele Tuts zum einsteigen. Fürn Anfang vlt. sogar besser geeignet. Außerdem gibt es häufigere Releases. Mina 2 dümpelt ja so vor sich hin.
__________________
Wer C++ kann, kann auch Java Geändert von Kr0e (14.03.2010 um 09:14 Uhr) |
|
|
|
| #12 (permalink) | |
|
Java-Forum Team
IRC-Operator (Java-Chat)
Moderator Registriert seit: 17.08.2007
Beiträge: 3.954
Abgegebene Danke: 2
Erhielt 153 Danke für 149 Beiträge
|
Kam MINA nicht später raus als Netty?
__________________
Lycia: Lycia (formerly known as Java XmlParser) is an event-based parser framework for being used on top of different structured datasources such as XML http://code.google.com/p/lycia/ |
|
|
|
| #13 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 17.04.2008
Beiträge: 340
Abgegebene Danke: 4
Erhielt 6 Danke für 6 Beiträge
|
Gute Frage... Kann gut sein. Laut dem Autor bezieht die Behebung der ganzen kleinen Problem auf Netty 3 und nicht auf die älteren Releases.
__________________
Wer C++ kann, kann auch Java |
|
|
|
| #14 (permalink) | |
|
Java-Forum Team
IRC-Operator (Java-Chat)
Moderator Registriert seit: 17.08.2007
Beiträge: 3.954
Abgegebene Danke: 2
Erhielt 153 Danke für 149 Beiträge
|
Achso, hm kann sein
Netty 3 hab ich mir noch nicht angesehen.
__________________
Lycia: Lycia (formerly known as Java XmlParser) is an event-based parser framework for being used on top of different structured datasources such as XML http://code.google.com/p/lycia/ |
|
|
|
|
| Lesezeichen |
Latex Maths & Physics Editor ...
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Server sauber beenden | musiKk | Netzwerkprogrammierung | 6 | 04.06.2008 20:55 |
| finlalize Methode vom Server wird nicht aufgerufen | TeacherMC | Netzwerkprogrammierung | 4 | 21.05.2007 11:01 |
| Fehler beim starten von Glassfish | siassei84 | Allgemeines EE | 0 | 26.02.2007 17:43 |
| InputStream - seltsamer Output | Rex | Allgemeine Java-Themen | 2 | 07.10.2006 16:09 |
| FindServers - Server im LAN finden! | Andy | Codeschnipsel u. Projekte | 2 | 22.09.2005 15:07 |