TCP/IP - Chat mit LNet über verschiedene Plattformen
TCP/IP - Chat mit LNet über verschiedene Plattformen
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.
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.
-
- 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
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/
Re: TCP/IP - Chat mit LNet über verschiedene Plattformen
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.
Aber wwas für Informationen bräuchtest du denn? Tut mir leid, ich hab da grade keinen Plan.
Re: TCP/IP - Chat mit LNet über verschiedene Plattformen
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?
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?
-
- 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
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"
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/
Re: TCP/IP - Chat mit LNet über verschiedene Plattformen
Ok. Ich versuche es noch mal.
Also das ist der Quelltext für meinen Server:
Und das ist der Quelltext für den Client:
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.
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.
Re: TCP/IP - Chat mit LNet über verschiedene Plattformen
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
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
Re: TCP/IP - Chat mit LNet über verschiedene Plattformen
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
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