![]() |
Server sendet Daten an Clients
moin leuts,
ich hab ma wieder ein klitzekleines Problem: Für die Schule soll ich ein kleines Nachrichtenprogramm schreiben. D.h. die Clienten connecten einen Server, der dann die Nachrichten an die Clienten schickt (ähnlich wie ein Chat). Ich habe TServersocket und Tclientsocket genommen. Mein Problem ist nun: Die Clienten verbinden sich mit dem Server und können auch Text an den Server schicken. Mit folgendem Code versuche ich nun das der Server Daten an alle Clienten schickt:
Code:
(Xorstring ist eine einfache Xor-Verschlüsselung)
procedure TForm1.button4click;
var text: string; begin text := edit1.text; if Serversocket1.active = true then Serversocket1.socket.sendtext(xorstring('SERVER: '+text, '')); end; Wenn ich nun meinen text senden will, erhalte ich folgende fehlermeldung: Zitat:
Die Clienten sind doch mit dem Server verbunden ! *hilfeeee* |
Re: Server sendet Daten an Clients
Wenn du von einem ServerSocket an einen (oder mehrere) ClientSocket(s) Text senden willst, musst du angeben an welchen (oder welche). Das tut man üblicherweise mit ServerSocket1.Socket.Connections[*Nr der Connection von 0 an*].SendText(Text);
Also in deinem Fall: ServerSocket1.Socket.Connections[0].SendText(xorstring('SERVER: '+text, '')); Wenn du vom Server aus an mehrere Clients auf einmal schicken willst, machst du das einfach mit einer FOR-Schleife... |
Re: Server sendet Daten an Clients
hi,
dankeschön es funzt jetzt ! ;) (zumindestens an einen Clienten senden) Wie war das mit der for-Schleife nochmal ? ;) |
Re: Server sendet Daten an Clients
Delphi-Quellcode:
Ersetz die 0 in der eckigen Klammer duch ein i (integer) und lasse den Code in einer Schleife von 0 bis ServerSocket1.Socket.ActiveConnections -1 ausführen ;-)
ServerSocket1.Socket.Connections[0].SendText(xorstring('SERVER: '+text, ''));
|
Re: Server sendet Daten an Clients
Zitat:
also so ? (ich kann es heute leider nicht selbst ausprobieren weil mein "delphi-pc" in der "werkstatt" ist. Zitat:
P.S.: Ich hasse for-Schleifen, nix geht über eine gute if..then..else-schleife ! ;) |
Re: Server sendet Daten an Clients
Zitat:
|
Re: Server sendet Daten an Clients
tut mir leid aber ich raff das nicht ! :wall:
Zitat:
oder muss ich erst mit serversocket.socket.activeconnections herausfinden wieviel verbinden existieren und diese zahl dann bei i eintragen ?? hab das noch grad gefunden, stimmt das ?
Code:
for i := 0 to Server.Socket.ActiveConnections - 1 do
begin Server.Socket.Connections[i].SendText('Irgendwas') end; |
Re: Server sendet Daten an Clients
hi delphman.
serversocket1.socket.activeconnections liefert dir ja zurück, wieviele clients verbunden sind. weil du aber bei 0 anfängst, ist der letzte client dann serversocket1.socket.activeconnections - 1 (das ist wie bei deinem alter. wenn du jetzt 15 jahre alt bist, läuft dein sechzehntes lebensjahr ;) ). ergo:
Delphi-Quellcode:
Aenogym
for i:=0 to serversocket1.socket.activeconnections - 1 do
serversocket1.socket.connections[i].sendtext('hallo'); edit: an siehste, hasstes ja allein geschafft :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz