AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi VCL Forms als/in TServerSocket-Threads?
Thema durchsuchen
Ansicht
Themen-Optionen

VCL Forms als/in TServerSocket-Threads?

Ein Thema von PlugnPray · begonnen am 28. Jul 2006
Antwort Antwort
PlugnPray

Registriert seit: 28. Jul 2006
1 Beiträge
 
Delphi 2005 Personal
 
#1

VCL Forms als/in TServerSocket-Threads?

  Alt 28. Jul 2006, 17:55
Hallo Leute,

Ich versuche nun seit 3 Tagen einen Chat-Clienten zu erstellen der ähnlich funktionieren würde wie icq/msn, leider nicht erflogreich. Es scheitert schon an dem erstellen der kleinen Chatfenster wie man sie von icq kennt.
Ich will also mit jedem User der connected in einer separaten Form chatten, wobei die MainForm die Kontaktliste ist und auch der ChatServer in derselben Anwendung läuft.
Habe es nun mit Indy IdTCPServer und TServerSocket versucht, hat leider nichts gebracht, ich krieg's nicht gebacken folgendes zu tun:
1.) Wenn ein Client connected einen Thread und eine Form (ChatWindow) zu erstellen.
2.) Wenn ein Client daten sendet (text reicht ersmal aus) den Client zu identifizieren und die dazugehörige Form zu mit der Nachricht aktualisieren.
3.) Ich muss natürlich auch Nachrichten versenden können, also enthält jedes Chatwindow auch eingabefelder etc und soll text zum Clienten senden.

Was ich bisher maximal erreicht habe war, dass ich sich schon das TMemo in dem ChatWindows geupdated hat, ich konnte aber mit dem Fenster nicht bewegen (bzw nur dann wenn der Klient gesendet hat und der Thread drauf reagiert hat), von Nachrichten eingeben und senden ganz zu schweigen. Ausserdem stürzt es bei mehr als einem Client ab.

Bin jetzt nach unzähligen Versuchen und Modifikationen etwas ratlos, alles was ich im Forum und Google zum Thema VCL und Threads gefunden habe bezieht sich immer auf das updaten der HauptForm, nirgendwo findet man Beispiele wie ich Applikationen ala icq schreibe (halt nur plus der Server in der selben App)

Hilfe? Ist überhaupt der Ansatz richtig in dem "Client-Abhör-Thread" eine TForm zu erstellen richtig?

Hier der Ansatz mit dem TServerSocket, ich glaube den Ansatz mit Indy-Komponenten werde ich eh nicht mehr verfolgen da man viel zu wenig Dokumentation zu ihnen findet. Die beiden Prozeduren habe ich in einem Beispiel-Chat gefunden und etwas angepasst.


Delphi-Quellcode:
Type
  TForm1 = Class(TForm)
  ...
end;


  TChatServerThread = Class(TServerClientThread)
  public
    Procedure ClientExecute; override;
  End;

Var
  Form1: TForm1;

Implementation

   ...


Procedure TChatServerThread.ClientExecute;
Var
  Data: Array[0..1023] Of char;
  RecText: String;
  SocketStream: TWinSocketStream;
  CCI: TChatWindowIn;
Begin
  CCI:=TChatWindowIn.Create(Form1);
  CCI.Show;
  While Not Terminated And ClientSocket.Connected Do
  Try
    SocketStream := TWinSocketStream.Create(ClientSocket, 30000);
    Try
      FillChar(Data, SizeOf(Data), 0);
      If SocketStream.Read(Data, SizeOf(Data)) = 0 Then
      Begin
        sleep(1);
        ClientSocket.Close;
        Terminate;
      End;

      RecText := Data;
      CCI.Messages.Lines.Add(RecText);

      If ClientSocket.Connected Then
      Begin
        ClientSocket.SendText(RecText);
      End;
    Finally
      SocketStream.Free;
    End;
  Except
    HandleException;
  End;
End;


Procedure TForm1.ServerSocketGetThread(Sender: TObject;
  ClientSocket: TServerClientWinSocket;
  Var SocketThread: TServerClientThread);
Begin
  // Create a new thread for connection
  SocketThread := TChatServerThread.Create(False, ClientSocket);
  ClientSocket.SendText('Welcome to Server'+#13#10);
End;
Das ChatWindow sieht so aus, ist auch noch nichts drin wirklich.
http://img215.imageshack.us/img215/9...benanntsz6.jpg

Danke im Voraus.
  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 04:16 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