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
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