TCP/IP - Chat mit LNet über verschiedene Plattformen

Alle Fragen zur Netzwerkkommunikation
Antworten
torte
Beiträge: 13
Registriert: Sa 9. Jun 2012, 08:45

TCP/IP - Chat mit LNet über verschiedene Plattformen

Beitrag von torte »

Guten Tag.

Ich habe folgendes Problem:

Ich habe ein kleines Chat- Programm geschrieben. Dieses funktioniert an sich auch. Allerdings nur wenn Server und Client auf der gleichen Plattform laufen.
Jedoch kann der Client (unter Windows) nicht connecten wenn der Server unter Linux läuft. (und umgekehrt)

Ist es überhaupt möglich Strings mithilfe von LNet über verschiedene Plattformen zu senden/ empfangen?
Wenn ja, wie könnte ich mein Problem lösen?

Vielen Dank im Vorraus für eure Antworten.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: TCP/IP - Chat mit LNet über verschiedene Plattformen

Beitrag von Christian »

Ja das geht, meine Glaskugel ist aber beim Pollierer und vom BND hab ich die Überwachung deiner IT so schnell nicht genehmigt bekommen weshalb dein anderes Problem wohl wrten muss bis du die nötigen Informationen rausrückst.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

torte
Beiträge: 13
Registriert: Sa 9. Jun 2012, 08:45

Re: TCP/IP - Chat mit LNet über verschiedene Plattformen

Beitrag von torte »

Ersteinmal danke für die schnelle Antwort.
Aber wwas für Informationen bräuchtest du denn? Tut mir leid, ich hab da grade keinen Plan.

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: TCP/IP - Chat mit LNet über verschiedene Plattformen

Beitrag von theo »

Ja was soll man denn dazu sagen?
Warum soll das prinzipiell nicht gehen?
Warum es konkret nicht geht, können wir doch nicht wissen.
Am Ende liegts am Zeilenumbruchzeichen oder sowas, oder doch am Firewall?

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: TCP/IP - Chat mit LNet über verschiedene Plattformen

Beitrag von Christian »

Wie solln wir denn wissen wie du deine Probleme lösen sollst wenn wir gar nicht wissen was du da machst.
Stell dir bevor du ne Frage stellst einfach selbst de Frage "was braucht jemand mindestens an Information, der mir die Frage beantworten soll"
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

torte
Beiträge: 13
Registriert: Sa 9. Jun 2012, 08:45

Re: TCP/IP - Chat mit LNet über verschiedene Plattformen

Beitrag von torte »

Ok. Ich versuche es noch mal.
Also das ist der Quelltext für meinen Server:

Code: Alles auswählen

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, lNetComponents, Forms, Controls, Graphics,
  Dialogs, StdCtrls, ExtCtrls, lNet;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    LabeledEdit1: TLabeledEdit;
    Memo1: TMemo;
    Server: TLTCPComponent;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ServerAccept(aSocket: TLSocket);
    procedure ServerReceive(aSocket: TLSocket);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
var Port: Integer;
    ServerIP: String;
    Verbindungsaufbau: Boolean;
begin
  Port:=StrToInt(LabeledEdit1.Text); // =5000
  Server.Port:=Port;
  ServerIP:='192.168.0.50'; // = meine IP- Adresse bei einer Lan- Verbindung
  Server.Host:=ServerIP;
  If Server.Listen(Port) then
   Memo1.Append('Server horcht ...');
  Button1.Enabled:=False;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var Sendetext: String;
begin
  Sendetext:=Edit1.Text;
  If Sendetext <>'' then
   Server.SendMessage(Sendetext);
  Memo1.Append('gesendete Nachricht: '+Sendetext);
end;
 
procedure TForm1.ServerAccept(aSocket: TLSocket);
begin
  Memo1.Append('Verbindung zum Client mit der IP ' +aSocket.LocalAddress+' wurde hergestellt');
end;
 
procedure TForm1.ServerReceive(aSocket: TLSocket);
var Eingangstext: String;
begin
  aSocket.GetMessage(Eingangstext);
  Memo1.Append('eingehende Nachricht: '+Eingangstext);
end;
 
end.
 



Und das ist der Quelltext für den Client:

Code: Alles auswählen

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, lNetComponents, Forms, Controls, Graphics,
  Dialogs, StdCtrls, ExtCtrls, lNet;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Client: TLTCPComponent;
    Edit1: TEdit;
    LabeledEdit1: TLabeledEdit;
    LabeledEdit2: TLabeledEdit;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ClientConnect(aSocket: TLSocket);
    procedure ClientReceive(aSocket: TLSocket);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
var Port: Integer;
    ServerIP: String;
    Verbindungsaufbau: Boolean;
begin
  Port:=StrToInt(LabeledEdit1.Text); // =5000
  ServerIP:=LabeledEdit2.Text; // z.B 192.168.0.50 | Client IP = 192.168.0.52
  Verbindungsaufbau := Client.Connect(ServerIP,Port);
  If Verbindungsaufbau then
   Memo1.Append('Die Verbindung wird aufgebaut . . .');
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var Sendetext: String;
begin
  Sendetext:=Edit1.Text;
  If Sendetext <> '' then
   Client.SendMessage(Sendetext);
  Memo1.Append('gesendete Nachricht: '+Sendetext);
 
end;
 
procedure TForm1.ClientConnect(aSocket: TLSocket);
begin
  Memo1.append ('Verbindung zum Server mit der IP ' + aSocket.LocalAddress +' wurde hergestellt');
end;
 
procedure TForm1.ClientReceive(aSocket: TLSocket);
var Eingangstext: String;
begin
  aSocket.GetMessage(Eingangstext);
  Memo1.Append('Eingehende Nachricht: '+Eingangstext);
end;
 
end.
 



Die Firewalls habe ich auf beiden Rechnern deaktiviert, damit ich ausschließen kann das das Programm geblockt wird.
Die Lan - Verbindung zwischen beiden Computern ist aktiv. Beide Computer können sich unter den angegebenen IP - Adressen anpingen.

Ich hoffe diese Informationen helfen euch weiter.

vielen Danke im Vorraus.

Amo89
Beiträge: 1
Registriert: Fr 25. Okt 2013, 14:05

Re: TCP/IP - Chat mit LNet über verschiedene Plattformen

Beitrag von Amo89 »

Hallo,

ich habe den Chat mal übernommen und die ereignisse Hinzugefügt (für serveraccept ereignis:onaccept, serverreceive ereignis:onreceive, clientconnect, ereignis:onconnect und clientreceive, ereignis:onreceive). Vom server kann man nun eine Nachricht senden, die auch beim clienten ankommt andersrum aber nicht. Woran kann das liegen?

MfG

amo

torte
Beiträge: 13
Registriert: Sa 9. Jun 2012, 08:45

Re: TCP/IP - Chat mit LNet über verschiedene Plattformen

Beitrag von torte »

Hallo,

ich habs gerade nochmal getestet und bei mir kommen alle Nachrichten an.

Sind die Einstellungen von dem Memo vielleicht auf false?

Etwas anderes fällt mir dazu leider auch nicht ein.

Torte

Antworten