java-forum.org
JBoss Seam
Alter Preis: 39,95 €
Jetzt: 0,00 €

zzgl. Versandkosten

Zurück   java-forum.org > Java - Programmierung > Netzwerkprogrammierung

Netzwerkprogrammierung Fragen zu Client-/Server-Programmierung sowie zu verteilten Anwendungen (RMI, CORBA etc.)

Antwort     Ist dieses Thema erledigt?
Themen-Optionen Thema durchsuchen Ansicht
Alt 12.03.2010, 01:51   #1 (permalink)
Neuer Benutzer
Bit
 
Registriert seit: 12.03.2010
Beiträge: 3
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard Multiuser Server mit Threadpool

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
chineseleper ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 12.03.2010, 07:19   #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
andre111 ist gerade online  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 12.03.2010, 07:34   #3 (permalink)
Stammbenutzer
Kilobyte
 
Benutzerbild von mogel
 
Registriert seit: 04.12.2007
Beiträge: 607
Abgegebene Danke: 17
Erhielt 11 Danke für 11 Beiträge
Zitat: chineseleper
Beitrag anzeigen
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.
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)
__________________
.http://www.fantasya-pbem.de. - Fantasy-Multiplayer-Strategie - Runden basiert
mogel ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 12.03.2010, 08:43   #4 (permalink)
Stammbenutzer
Viertel Gigabyte
 
Benutzerbild von tuxedo
 
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
tuxedo ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Danke sagt:
chineseleper (12.03.2010)
Alt 12.03.2010, 11:01   #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?
chineseleper ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 12.03.2010, 14:35   #6 (permalink)
Stammbenutzer
Viertel Gigabyte
 
Benutzerbild von tuxedo
 
Registriert seit: 18.11.2004
Beiträge: 4.571
Abgegebene Danke: 6
Erhielt 42 Danke für 42 Beiträge
Zitat: chineseleper
Beitrag anzeigen
apache mina scheint aber glaube das zu sein, was ich benutzen möchte? sehe ich das richtig?
Keine Ahnung was du benutzen möchtest. Aber es würde sich mit deinen Anforderungen decken ...

- Alex
__________________
SIMON, das einfach bessere RMI ...
-> Projektseite
-> Warum SIMON besser ist als RMI
-> Support-Forum
tuxedo ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 12.03.2010, 14:42   #7 (permalink)
Java-Forum Team
IRC-Operator (Java-Chat)
Moderator
 
Benutzerbild von Noctarius
 
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/
Noctarius ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 12.03.2010, 16:57   #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.
chineseleper ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 13.03.2010, 18:17   #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
Kr0e ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 13.03.2010, 22:38   #10 (permalink)
Stammbenutzer
Viertel Gigabyte
 
Benutzerbild von tuxedo
 
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
tuxedo ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 14.03.2010, 09:10   #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)
Kr0e ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 14.03.2010, 11:21   #12 (permalink)
Java-Forum Team
IRC-Operator (Java-Chat)
Moderator
 
Benutzerbild von Noctarius
 
Registriert seit: 17.08.2007
Beiträge: 3.954
Abgegebene Danke: 2
Erhielt 153 Danke für 149 Beiträge
Zitat: Kr0e
Beitrag anzeigen
Alles in allem, ist Netty wohl ein Framework bei dem auf die ganzen kleinen Probleme von Mina explizit eingegangen ist.
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/
Noctarius ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 14.03.2010, 11:30   #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
Kr0e ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 14.03.2010, 11:34   #14 (permalink)
Java-Forum Team
IRC-Operator (Java-Chat)
Moderator
 
Benutzerbild von Noctarius
 
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/
Noctarius ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Antwort     Ist dieses Thema erledigt?

Lesezeichen

Latex Maths & Physics Editor ...

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Ä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


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:01 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de