Hi,
Crossposts sind zwar in DIESEM Forum erlaubt, trotzdem aber immer nicht so schön, da man als Helfer immer erst im anderen Forum schaun muss, wie da der Stand der Dinge (oder des Problems) ist.
Habe Deinen Code mal probiert und auch mal debuggt. Dabei habe ich bemerkt, dass Deine Prozedur
C#-Quelltext
(müsste es nicht "ReceiveData"heißen) in der Klasse Clients einen Fehler schmeisst. Oder besser gesagt, keinen Fehler schmeisst, sondern einfach abbricht. Da die Funktion im Konstruktor der Klasse Clients aufgerufen wird, wird also auch nichts in das Array hinzugefüht. Da es halt schon beim instanziiren abbricht. Was da aber genau der Fehler ist, weiss ich ehrlich gesagt nicht
Ansonsten sind mir noch ein paar Dinge aufgefallen (habe mir den Thread im anderen Forum nicht angesehen):
Warum ein
C#-Quelltext
und nicht eine
C#-Quelltext
Wäre für diesen Zweck wirklich besser, da Du die Verbindungen auf 100 festlegst. Bei ein er List<> könntest Du die Elemente hinzufügen, und könntest dann beim offline gehen die Anzahl abfragen. Und wenn Du Dich doch für ein Arry entscheidest, prüfe vor dem Aufruf von
C#-Quelltext
auf null!! Das
C#-Quelltext
1: 2: 3: 4: 5: 6:
| while (online && !listener.Pending()) { if (!online) { Thread.Sleep(200); } |
kannst Du Dir auch schenken, da
C#-Quelltext
1:
| Socket socket = listener.AcceptSocket(); |
solange wartet, bis sich ein Client verbindet.
Ansonsten solltest Du noch die Anzahl der Connections
C#-Quelltext
in die Methode
C#-Quelltext
1:
| StartClient(object socket) |
packen, da durch das Thread.Sleep() der Counter schon vor Ausführung der Methode hoch gesetzt wird.
Und ganz zum Schluss: ich habe das Gefühl, als ob der Process "GettingClients" endlos lauft. Jedenfalls trat beim beenden des Programs der Fall auf, dass die Form total hing. Habe mal dem Thread beim offline gehen gekillt, und dann war das Verhalten okay.
Hoffe, ich konnte ein wenig weiterhelfen,
Marko