# Probleme mit einem Array aus Sockets



## ph0 (29. Apr 2005)

Hallo!

Ich versuche gerade, meine völlig neuartige und konzeptionell innovative Idee () umzusetzen, und einen Chatserver zu schreiben. Hierzu lege ich ein Array aus Sockets und eines aus Threads an (siehe Sourcen), in denen die entsprechenden Clients abgelegt werden. Macht ein Client aber nun einen Disconnect, so wird sein Socket im Array zu einem NULL-Objekt, an das dann beim nächsten Versuch eines anderen Clienten, eine Nachricht zu schreiben, nichts gesendet werden kann. Daraufhin wirft der Server eine NULL-Socket-Exception und mach nen Abflug. Ich habe schon versucht, das Array neu aufzubauen, indem ein neues Array aus dem alten erzeugt wird, bis auf die NULL-sockets. Das tat aber leider auch nicht, irgendwie wurden die NULL-Sockets nämlich wieder mitkopiert  Im Source sind auch noch Überbleibsel anderer Lösungsansätze (tote Clients erhalten einen loopback-socket auf den localhost, ging aber auch nicht). Nun bin ich allerdings ratlos .

Da die Sourcen ein wenig lang sind, hab ich sie woanders abgelegt und unwichtiges entfernt und entsprechend markiert. Ich würde mich freuen, wenn jemand eine Idee dazu hat.
http://nopaste.php-q.net/130814

Ich würde die Exceptions auch nochmal abschreiben, wenn das wirklich notwendig ist.

MfG,
ph0


----------



## nassi (30. Apr 2005)

hi,

ich habe sowas ähnliches geschrieben. Bei mir müssen ebenfalls mehrhere Clients auf den Server zugreifen. Aber ich fand die Idee mit einem Array doof, weil ein Array so undynamisch ist.
Wenn bei mir ein Socket die Verbindung trennt, dann wird er aus einem Vector gelöscht.
Soll heissen, dass ich einen Vector mit Clients habe. Wenn ein Client dazu kommt, dann heisst es: v.addElement(client1);....
wenn einer gelöscht wird, dann wird verglichen:

Socket hilfClient;
for (int i=0;i<v.size();i++)
{
  hilfClient=(Socket)v.ElementAt(i);
  if (hilfClient==this.client) c.removeElementAt(i);
}

geht so einwandfrei!


----------



## bellmann29 (2. Mai 2005)

Hallo Ihr Zwei,

da Ihr scheinbar versucht, Server-Programme zu schreiben die mit mehreren Clients umgehen sollen, möchte ich Euch zwei Bücher empfehlen, beide recht dünn (im Vergleich zu anderen).

1. "How Tomcat works", gute Beschreibung wie der Tomcat das "Multi-Client-Problem" löst, sehr interessant und leicht zu verstehen.

2. "Threads", O´Reilley (richtig geschrieben ?), Eurer Problem wird dort ausführlich besprochen und mit vielen Beispielen auch gelöst.

3 h kann man doch mal im Buchladen verbringen, man muss ja nicht jedes Buch kaufen   

Bis dann


----------

