Fehler mit Socket
-
// dOnline is n AnsiString und da steht entwerder 0 oder 1 drin!
server->Socket->Connections[0]->SendText(dOnline);
| warum kommt da : Der Index der Liste überschreitet das Maximum (0)
was kann das bedeuten ?
Warum kommt das
wie krieg ichs weg?
Also an der stelle kommt der fehler... 100%

MFG
Schinken
-
hast du vorher auch server->Active = true; bzw server->Open(); gemacht? ansonsten gibt es keine connection, also is das maximum überschritten

wenn das nich zutrifft dann gib ma code.
-
is alles beide gemacht!
schau mal da, achja... Server: Daniel | Client: Reiner
http://root.pixelmurder.de/fehlerWinSock.jpg

MFG
Schinken
-
Hi!
Folgende Funktion habe ich mal geändert:
void __fastcall TForm1::activate(TObject *Sender) { if(btnConn->Caption == "Verbinden") { if(rUser) { client->Address = serverIP->Text; client->Open(); } else { server->Open(); } btnConn->Caption = "Trennen"; connStatus->Caption = "Verbunden"; } else { if(rUser) { client->Close(); } else { server->Close(); } btnConn->Caption = "Verbinden"; connStatus->Caption = "Getrennt"; }Die Funktionen Open() und Close() setzen Active auf true und false. Es ist also unnötig Active direkt zu setzen. Darum hab ich die Zeilen mal entfernt.
Das Zuweisungen wie
dOnline = 0;funktionieren liegt nur daran, dass der Compiler einen impliziten Konstruktoraufruf von AnsiString mit einem int-Parameter durchführt, weil AnsiString diesen zufällig anbietet. Prinzipiell wäre
dOnilne = "";wesentlich vernünfitger.

Desweiteren: server->Socket->Connections[0] ist ein Array, dass die einzelnen verbundenen Clients enthält. Ergo kann ohne Verbindung eine Clients keine Übertragung durchgeführt werden. Daher auch der Fehler "List Index out of Bounds (0)". Ergo muss ein Client sich erfolgreich bei deinem Server angemeldet haben, um mit dem Connections-Array arbeiten zu können.
Und als Anmerkung noch etwas: Das Chat-Beispiel im &BCB%\Examples solltest du dir mal ansehen.

-
thx etz gehts
