BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- Java Mehrere Stream Sockets managen (http://www.black-board.net/thread.php?threadid=23534)


Geschrieben von Antiheld am 27.10.2008 um 09:42:

  Mehrere Stream Sockets managen

Hallo Leute,

Zur Zeit überlege ich wie ich am besten einen kleinen Server programmieren soll. Es geht, komprimiert ausgedrückt, darum CachedRowSets an den User zu senden. Zuerst dachte ich daran DatagramSockets zu verwenden, aber da die CachedRowSets möglicherweise auch etwas größer ausfallen könnten denke ich das ich mit einer TCP Verbindung besser dran bin. Mir stellt sich nun die Frage wie ich am effizientesten all dieser Verbindungen halte.
Meine bisherige Überlegung geht dahin über einen bestimmten Port-Intervall Threads mit ServerSockets zu erstellen welche die empfangenen Daten empfangen. Gibt es da vielleicht elegantere Methoden für und wie Regel ich das dann am besten von der Client Seite aus? Vielleicht die Timeouts gering setzen und dann im Port iterieren?

Ich weiß das es für solche Sachen auf der Server Seite auch JMS gibt, allerdings habe ich auf meinem v-Server nicht die Kapazitäten für einen AppServer und reine Message Broker wie ActiveMQ machen Probleme mit serialisierten Objekten (also von ActiveMQ weiß ich es)

Vielleicht fällt euch ja was dazu ein oder habt schon Erfahrung damit.

Grüße
Anti



Geschrieben von phlox81 am 27.10.2008 um 15:48:

 

Hm, was genau willst du denn machen?
Willst du einfach nur ein paar Socketverbindungen verwalten?
Wie sind deine Anforderungen an den Server, und wie sieht das Protokol aus (falls es eins gibt).

phlox



Geschrieben von Antiheld am 27.10.2008 um 16:19:

 

Hallo phlox,

Ich möchte eine Software entwickeln welche mehrere Datenbank Verbindungen hält und sie dem User in einer von mir entwickelten GUI bereitstellt. Diese GUI existiert auch schon, bis auf das dort die Datenbank noch lokal verwaltet wird. Das ganze soll jetzt durch den Server zentralisiert und verwaltet werden. Der Nutzerkreis ist nicht besonders groß, und wird es wohl auch nicht besonders groß werden da ich es gerne in einem kleinen Kreis behalten würde. Folglich werden es auch nicht so viele Verbindungen werden (ich denk dabei an ungefähr 100). Die Übertragung im ganzen habe ich mir mit einer serialisierten Wrapper Klasse vorgestellt.

Ich habe jetzt auch noch was drüber nachgedacht, von der groben Logik hab ich mir das überlegt:
Ein DatagramSocket bleibt offen um Verbindungsanfragen entgegen zunehmen, die IP wird mit den bisherigen Verbindungen abgeglichen. Ist dem nicht so kommt eine Verwaltungsklasse ins Spiel die mir einen möglichen Port angibt, per DatagramSocket diesen dem Client angibt und in einem Thread ein StreamSocket öffnet welcher dann auch gleich die Instruktionen der angekommenen Wrapper Klasse verarbeitet. Wird die Verbindung kontrolliert geschlossen teilt der Thread dies auch der Port Verwaltungsklasse mit. Für den Fall das die Verbindung nicht kontrolliert geschlossen wird läuft ein Thread in bestimmten Zeitintervallen und prüft ob die Verbindung noch besteht.

Grüße
Anti



Geschrieben von phlox81 am 27.10.2008 um 16:53:

 

Klingt für mich nach einem Proxy.
Evtl. ist auch das "Fliegengewicht" Entwurfsmuster hier was.


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH