lnet und mac

Alle Fragen zur Netzwerkkommunikation
Antworten
Salem
Beiträge: 7
Registriert: Mo 1. Nov 2010, 23:24

lnet und mac

Beitrag von Salem »

Servus zusammen,

da ja lnetvisual auf dem mac nicht funktioniert, wollte ich das Konsolen Beispiel entsprechend umschreiben, dass es in ner Form verwendet werden kann, allerdings funktioniert das vorne und hinten nicht. Kann sich das mal einer anschaun, was da schief läuft?
Soll ein kleines Chat programm werden, nix spektakuläres.

Code: Alles auswählen

unit Unit1; 
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ExtCtrls, ComCtrls, lNet;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    StatusBar1: TStatusBar;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
  { TClient }
 
  TClient = class
    private
      CQuit: boolean;
      CCon: TLTcp; // connection itself
      procedure OnDs(aSocket: TLSocket);
      procedure OnRe(aSocket: TLSocket);
      procedure OnEr(const msg: String; aSocket: TLSocket);
    public
      constructor Create;
      destructor Destroy; override;
      //procedure Run;
  end;
 
  //implementation
 
 
 
var
  Form1: TForm1;
  cs:TClient;
 
implementation
 
  { TForm1 }
 
  procedure TForm1.Button1Click(Sender: TObject);
  begin
    if Button1.Caption = 'Connect' then
    begin
       if cs.CCon.Connect(Edit1.Text,Word(StrToInt(Edit2.Text))) then
       begin
          cs.CCon.CallAction;
          Button1.Caption := 'Disconnect';
          StatusBar1.Caption := 'connected';
       end;
    end
    else
    if Button1.Caption = 'Disconnect' then
    begin
       cs.CCon.Disconnect(true);
       Button1.Caption := 'Connect';
    end;
  end;
 
  procedure TForm1.FormCreate(Sender: TObject);
  begin
    cs:=TClient.Create;
  end;
 
{$R *.lfm}
 
  procedure TClient.OnDs(aSocket: TLSocket);
  begin
    // disconnected
  end;
 
  procedure TClient.OnRe(aSocket: TLSocket);
  var s:String;
  begin
    if aSocket.GetMessage(s) > 0 then
    begin
         // processing messages
    end;
  end;
 
  procedure TClient.OnEr(const msg: String; aSocket: TLSocket);
  begin
    CQuit := true;
  end;
 
  constructor TClient.Create;
  begin
    CCon := TLTCP.Create(nil);
    CCon.OnError := @OnEr;
    CCon.OnReceive := @OnRe;
    CCon.OnDisconnect := @OnDs;
    CCon.Timeout := 100;
  end;
 
  destructor TClient.Destroy;
  begin
    CCon.Free;
    inherited Destroy;
  end;
 
end.

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: lnet und mac

Beitrag von Scotty »

Hast du keinen eigenen Debugger? :mrgreen:
Ansonsten: Synapse (Google +ararat) funktioniert auf MacOS einwandfrei. Ein Chatprogramm mit Synapse ist sicher schon irgendwo als Beispiel zu finden.

Salem
Beiträge: 7
Registriert: Mo 1. Nov 2010, 23:24

Re: lnet und mac

Beitrag von Salem »

Hast du keinen eigenen Debugger?
ne, krieg ich aber sicher zu weihnachten ;-)
Ansonsten: Synapse (Google +ararat) funktioniert auf MacOS einwandfrei. Ein Chatprogramm mit Synapse ist sicher schon irgendwo als Beispiel zu finden.
nun, lnet funktioniert auf mac auch, allerdings ist das ja auch nicht gegenstand des problems. vorhandene beispiele, sowohl bei lnet, also auch synapse, beziehen sich auf nonvcl.
bei mir liegt das problem schlicht und ergreifend bei der verwendung von den bestehenden libraries in vcl form. bin wohl zusehr verwoehnt von events ;)

hab auf deiner seite gesehen, dass du ja ein netzwerkfaehiges spiel geschrieben hast, daher nehm ich auch mal an, dass du sicherlich eine qualifizierte aussage treffen kannst, wie man bei dem client eine saubere umsetzung realisieren kann ;)

ps: und nein, leider gibt es wohl keine beispiele, aber jedemenge anfragen nach beispielen.

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: lnet und mac

Beitrag von Scotty »

Deine Frage bleibt leider zu unspezifisch. Fragst du, wie man einen Thread erstellt oder geht es um OOP Basics? Oder brauchst du Hilfe bei der Suche? Das geht schnell: http://www.lazarusforum.de/viewtopic.php?f=26&t=275" onclick="window.open(this.href);return false;

Salem
Beiträge: 7
Registriert: Mo 1. Nov 2010, 23:24

Re: lnet und mac

Beitrag von Salem »

es dreht sich ja nur um den client. das echo server beispiel ist ja soweit ausreichend fuer mich.
bei dem client ist ja ein OnReceive event notwendig (analog zum lnet beispiel) wenn ich synapse in einer form verwenden moechte. und daran haperts. ob jetzt hier unbedingt ein thread notwendig ist, gute frage. von daher wird das wohl eher kategorie oop basics sein.

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: lnet und mac

Beitrag von Scotty »

Hast du den anderen Thread gelesen? Theo hat dort ein ausführliches Beispiel gepostet.

Salem
Beiträge: 7
Registriert: Mo 1. Nov 2010, 23:24

Re: lnet und mac

Beitrag von Salem »

hab ich und der server beispielcode wandelt sich immernoch nicht in ein client vcl beispiel.
mal davon abgesehen, wird mir langsam fad auf ne konkrete hilfestellung zu warten wenn ich nur heise trolling bekomme.
thread kann geschlossen werden.

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: lnet und mac

Beitrag von Socke »

Hallo Salem,
Salem hat geschrieben:mal davon abgesehen, wird mir langsam fad auf ne konkrete hilfestellung zu warten wenn ich nur heise trolling bekomme.
Auch wenn ich keine Ahnung vom eigentlichen Thread-Thema habe, muss ich mich mal ein wenig aufregen :D (bitte nicht all zu ernst nehmen), aber du hast bisher noch keine Fehlermeldung oder ähnliches gepostet. Die einzige Aussage von dir, ist, dass der Code nicht funktioniert. Scotty hat bereits darauf hinzgewiesen, dass deine Frage zu unspezifisch sei. Nicht jeder hat Zeit, deinen Quelltext herunterzuladen, ein passendes Formular dazu zusammenzucklicken und dann noch einen Server dazu zu suchen/schreiben.
Also:
  • Was hast du bisher probiert?
  • Beispielprojekt mit allen benötigten Quelltexten (möglichst keine Binärprogramme)
  • Was funktioniert denn nicht? (erwartetes Ergebnis und tatsächliches Ergebnis)
  • Welche Fehlermeldung tritt auf? (oder wird gar keine angezeigt)
  • Screenshots
Ich bin sicher, die Bereitschaft zu helfen ist immer noch da! Versuch bitte nocheinmal dein Problem so detailliert wie möglich zu beschreiben.

Viel Erfolg bei der Fehlerbehebung
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten