AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Server sendet Daten an Clients
Thema durchsuchen
Ansicht
Themen-Optionen

Server sendet Daten an Clients

Ein Thema von PierreB · begonnen am 21. Dez 2004 · letzter Beitrag vom 22. Dez 2004
Antwort Antwort
PierreB
(Gast)

n/a Beiträge
 
#1

Server sendet Daten an Clients

  Alt 21. Dez 2004, 16:10
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:
procedure TForm1.button4click;
var
   text: string;
begin
text := edit1.text;
if Serversocket1.active = true then
Serversocket1.socket.sendtext(xorstring('SERVER: '+text, ''));
end;
(Xorstring ist eine einfache Xor-Verschlüsselung)


Wenn ich nun meinen text senden will, erhalte ich folgende fehlermeldung:
Zitat:
Im Projekt server.. bla bla Exeption...
Eine Aufforderung zum Senden oder Empfangen von Daten wurde verhindert, da der
Socket nicht verbunden ist und (beim senden über einem datagrammsocket mit sendto-Aufruf)
keine Adresse angegen wurde.
Wie der Server ist nicht verbunden ?
Die Clienten sind doch mit dem Server verbunden !


*hilfeeee*
  Mit Zitat antworten Zitat
kill -9
(Gast)

n/a Beiträge
 
#2

Re: Server sendet Daten an Clients

  Alt 21. Dez 2004, 20:24
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...
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#3

Re: Server sendet Daten an Clients

  Alt 21. Dez 2004, 20:31
hi,

dankeschön es funzt jetzt ! (zumindestens an einen Clienten senden)


Wie war das mit der for-Schleife nochmal ?
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Server sendet Daten an Clients

  Alt 22. Dez 2004, 11:48
ServerSocket1.Socket.Connections[0].SendText(xorstring('SERVER: '+text, '')); 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
Julian J. Pracht
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#5

Re: Server sendet Daten an Clients

  Alt 22. Dez 2004, 16:18
Zitat:
von 0 bis ServerSocket1.Socket.ActiveConnections -1 ausführen
wieso von 0 bis -1?

also so ? (ich kann es heute leider nicht selbst ausprobieren weil mein "delphi-pc" in der "werkstatt" ist.

Zitat:
For i:=0 to -1 do
ServerSocket1.Socket.Connections[i].SendText(xorstring('SERVER: '+text, ''));

P.S.: Ich hasse for-Schleifen, nix geht über eine gute if..then..else-schleife !
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#6

Re: Server sendet Daten an Clients

  Alt 22. Dez 2004, 16:36
Zitat von delphman:
Zitat:
von 0 bis ServerSocket1.Socket.ActiveConnections -1 ausführen
wieso von 0 bis -1?
da steht ServerSocket1.Socket.ActiveConnections-1. Nur bis -1 macht die Schleife doch keinen Sinn. und von 0 weil die Indizierung von Arrays bei Delphi bei 0 beginnt.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#7

Re: Server sendet Daten an Clients

  Alt 22. Dez 2004, 16:42
tut mir leid aber ich raff das nicht !

Zitat:
Nur bis -1 macht die Schleife doch keinen Sinn.
bis wohin dann?

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;
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Server sendet Daten an Clients

  Alt 22. Dez 2004, 16:53
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:
for i:=0 to serversocket1.socket.activeconnections - 1 do
  serversocket1.socket.connections[i].sendtext('hallo');
Aenogym

edit: an siehste, hasstes ja allein geschafft
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz