TServerSocket - Wie komme ich an das korrekte Handel um Daten auszulesen
-
folgender code, allerdings enhält sHdl nicht das Handle des Sockets vondem die Daten kommen... ich hab schon in der Hilfe geschaut aber ich finde einfach nicht das Richtige.
void __fastcall TForm1::ServSockClientRead(TObject *Sender, TCustomWinSocket *Socket) { AnsiString tmp; int i; int aCons = 0; int sHdl = 0; aCons = ServSock->Socket->ActiveConnections; sHdl = ServSock->Socket->SocketHandle; if( aCons > 0 ) { for( i = 0; i<aCons; i++ ) { if( ServSock->Socket->Connections[i]->SocketHandle == sHdl ) { ...
-
chickonspeed schrieb:
//ServSock->Socket->SocketHandle ist das EIGENE Handle sHdl = ServSock->Socket->SocketHandle; //Das ist das Handle eines mit dir verbundenen CLIENTS ServSock->Socket->Connections[i]->SocketHandle
also wird das nix.
Was hast du denn genau vor?
Edit:
Wenn du daten von einem Client lesen möchstest, dann guck dir mal die Ereignisse von TServerSocket an
-
ich will einfach daten aus einem client socket lesen. drum versuch ich das ganze ja auch in TForm1::ServSockClientRead allerdings muß ich ja wissen von welchem client die daten ankommen sonst weiß ich ja nicht woraus ich lesen soll.
was mich halt interessiert wie ich feststellen kann welche id (i) das socket hat aus dem gelesen werden soll.
wenn ich das ganze dann nur mit ServSock->Socket->ReceiveText(); realisieren will bekomm ich einen fehler sobald ich von meinem client etwas abschicke, der besagt das er keinen socket zum lesen hat (10057).
-
Das is gar nicht so schwer
Wenn bei deinem ServerSocket das OnClientRead-Event ausgelöst wird, liest du automatisch von dem Client, der die etwas sendet. Das Handle von dem Client kannst du dir ebenfalls im OnClientRead holen
void __fastcall TGebaeude::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { //so erhälst du den Text vom Client AnsiString text = Socket->ReceiveText(); //Hier hättest du das Handle vom CLIENT Socket->SocketHandle; //Das wäre das gegenstück, also das SERVER-HANDLE ServerSocket1->Socket->SocketHandle; }
Mehr steckt da jetzt nicht dahinter
-
*outch*
danke!!!