Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Chatserver mit TServerSocket (https://www.delphipraxis.net/149949-chatserver-mit-tserversocket.html)

taaktaak 3. Apr 2010 20:22

Re: Chatserver mit TServerSocket
 
... aber ist nicht jede Anwendung sowohl Server als auch Client? Sonst läuft ja der gesamte Datenverkehr über einen Computer?

Capa 3. Apr 2010 20:27

Re: Chatserver mit TServerSocket
 
bei dieser version ist das der fall das alles über den server läuft dafür gibt es ja
einen server.Wenn du einen server hast mit 3 clients dann schickt zum bsp der client1
seine nachricht an den server und jenachdem ob du ihm befehle mitgibst leitet der es
an alle weiter oder nur an einen bestimmten user.

taaktaak 3. Apr 2010 20:33

Re: Chatserver mit TServerSocket
 
Ist es denn möglich, dass jede einzelne Anwendung zugleich Server und Client ist?
Oder ist das jetzt 'ne ganz dumme Frage?
:roll:

edit: Denn sonst könnten verschiedene Anwender Daten nur austauschen, wenn der eine Server in Betrieb ist - und das wäre ja kaum praktikabel!

Capa 3. Apr 2010 21:05

Re: Chatserver mit TServerSocket
 
Ich weiß ja nicht was genau du vorhast aber der großteil des internets basiert auf
dem server/client design, wie zum bsp ein web/ftp/pop3/smtp/game oder ssh-server alle
basieren darauf das es einen servergibt worauf die clients connecten.

Wenn ich das mit den P2P netzen richtig verstanden hab dann sollte das wohl eher das
sein was du suchst aber keine ahnung wie das genau funktioniert damit hab ich mich
noch nicht beschäftigt.

taaktaak 3. Apr 2010 21:20

Re: Chatserver mit TServerSocket
 
Ich denke, die Informationen muss ich jetzt erst einmal in Ruhe "sacken lassen".
"Peer to Peer" ist also offenbar das Thema mit dem ich mich beschäftigen muss.
Deine Infos haben mich schon einen Schritt weiter gebracht!
Vielen Dank für deine Geduld mit mir!

Capa 4. Apr 2010 22:10

Re: Chatserver mit TServerSocket
 
??? Hier steht die Frage in diesem Thread ???


Delphi-Quellcode:
procedure TUserlist.Broadcast(text: string; Socket: TServerSocket);
  var a: integer;
begin
  for a := 0 to socket.Socket.ActiveConnections-1 do
  begin
    if (a <= socket.Socket.ActiveConnections-1) then
      socket.Socket.Connections[a].SendText(text);
  end;
end;
Mit diesem Code hab ich immo folgendes Problem wenn zum bsp mehrere clients gleichzeitig
disconnecten dann tut der ja eine nachricht an ALLE clienten schicken leider auch an die
die mit disconnecten. Das ist der Grund warum ich eine Fehlermeldung bekomme.
Hab gehofft das wenn ich diese abfrage mache das es dann nicht mehr kommt aber irgendwie
klappt das nicht.

Weiß vielleicht einer wie ich das lösen kann ohne eine fehlermeldung zu bekommen ?

is halt nur schwer weil ich ja schon nen error bekomme wenn ich mit
Delphi-Quellcode:
 if (socket.socket.Connections[a].Connected) then ...
das ganze abfragen will.





Ebenso hab ich ein Problem damit wenn ich mein Programm starte und die downloads die ich zur
verfügung stellen will sind auf form3.listview1 dann muss ich erst form3.show machen bevor
ich die liste auf dieser form überhaupt erstmal auslesen kann.

sx2008 5. Apr 2010 13:33

Re: Chatserver mit TServerSocket
 
Zitat:

Zitat von Capa
Warum sollte ich eine Exception auslösen wenn der Username schon vergeben ist ?

Die Funktion ChangeNickname() soll den Nickname ändern und ansonsten nichts weiteres tun.
Insbesondere sollte die Funktion keinen String aufbereiten, der auf der Benutzeroberfläche angezeigt wird.
Es gibt zwei Fehlermöglichkeiten:
a.) der alte Nickname existiert nicht
b.) der neue Nickname ist schon vergeben
Die Funktion könnte nun einen Integerwert mit 0=alles ok, 1=alter Nickname existiert nicht und 2=neuer Nickname ist schon vergeben
zurückliefern.
Aber mit Exceptions wird ChangeNickname() weiter vereinfacht.
Die aufrufende Funktion muss nicht den Returnwert auswerten, sondern sie wird im Fehlerfall durch eine Exception unterbrochen.
Aus der Funktion wird eine Procedure - eine Auswertung des Rückgabewertes ist nicht mehr nötig.
ChangeNickname() ändert den Namen, sollte es ein Problem geben wird eine Exception ausgelöst.

Capa 5. Apr 2010 14:09

Re: Chatserver mit TServerSocket
 
eine frage was bringt dem user die exception ? nix weil er nicht weiß was los ist.
Ich gehe normalerweise davon aus der client und server nicht am selben rechner sitzen.
Ich habe die funktion ein wenig umgebaut zwar nciht perfekt aber meiner meinung nach
immernoch besser als ne exception auszulösen die nur der server mitbekommt und nicht
der client.

Außerdem wertet changenickname mittlerweile auch aus ob die namen zeichen enthalten
die der serverbetreiber nicht haben will.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:11 Uhr.
Seite 2 von 2     12   

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