AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Client - Server Kommunikation(Sockets) umstellen auf Linux
Thema durchsuchen
Ansicht
Themen-Optionen

Client - Server Kommunikation(Sockets) umstellen auf Linux

Ein Thema von Cyberaxx · begonnen am 5. Jul 2009 · letzter Beitrag vom 9. Jul 2009
Antwort Antwort
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#1

Client - Server Kommunikation(Sockets) umstellen auf Linux

  Alt 5. Jul 2009, 22:49
Hallo Delphi Gemeinde

Ich habe vor einiger Zeit mal eine Client - Server Kommunikation umgesetzt mittels den Delphi Sockets.
Das funktioniert auch wunderbar und ist schon seit geraumer Zeit in mehreren Programen umgesetzt.
Es dient nicht nur zum Austausch von Nachrichten zum Chatten sondern auch Steuerbefehle für andere
Programmteile.
Jetzt möchte ich gerade den Server umstellen von Windows auf Linux und suche dafür Sockets oder Socket alternativen.
Zudem sollte auch SLL gleich mit umgesetzt werden.

Als Entwicklungsumgebung für Linux nutze ich Lazarus.

Ich hatte da zuerst an die Indy's gedacht(TIdTCPServer/TIdTCPClient), da diese auch SLL umtestützen.
Dafür müsste ich aber das gesamte Programm umbauen, da es eben vollständig auf Sockets bassiert.
Unter Lazarus habe ich auch Sockets gefunden aber es macht den Anschein das dort nur ein Socket Client exsistiert
aber für Linux brauch ich eben den Server.

Habe dann einmal eine Testanwendung unter Windows programmiert die jeweils einen IdTCPServer und Client verwendet.
Nach erstem Test funktionierte dies auch. Sobald ich aber die jeweiligen IOHandler hinzufüge bleibt die Client
Anwendung immer nach dem Verbinden zum Server stehen, ohne eine Fehlermedung oder Timeout. Rein gar nichts...
Habe bisher auch nichts passendes gefunden

Woran könnte dies liegen?

Gibt es vllt auch eine Socket Alternative zu den Indy's die auf Windows und Linux laufen, so das ich nicht die
ganzen Units umschreiben und anpassen müsste?
Wäre es möglich sogar die Sockets in Lazarus zu nutzen mittels Delphi Projekt Importieren?

Gruß

Cyberaxx aka Daniel
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Client - Server Kommunikation(Sockets) umstellen auf Lin

  Alt 6. Jul 2009, 03:14
Zitat von Cyberaxx:
Zudem sollte auch SLL gleich mit umgesetzt werden.

Du meinst wohl SSL=Secure Sockets Layer ?
Also grundsätzlich geht sowohl unter Windows als auch unter Linux die Netzwerkkommunikation immer über Sockets.
Das Konzept der Sockets wurde unter Berkeley UNIX (BSD) erfunden und von MS-DOS und Windows übernommen (und erweitert).
Eigentlich müsste sich die Unit ScktComp mit wenigen kleinen Änderungen auch unter Lazarus kompilieren lassen.
Die Namen & Parameter der Funktionsaufrufe sind (fast) gleich.
In Delphi 2007 gibt es die Unit Sockets, die über bedingte kompilierung mit beiden Betriebssystemen umgehen kann.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Client - Server Kommunikation(Sockets) umstellen auf Lin

  Alt 6. Jul 2009, 10:37
Das Klingt schonmal sehr gut, muss ich nachher mal unter Lazarus ausprobieren.

Was dann noch fehlt, wenn dies klappt ist die Unterstützung von OpenSSL.
Ja meinte Secure Sockets Layer damit.

Wenn, wären denn die Indy's eigentlich recht gut geeignet als Alternative zu den Sockets wenn das jemand funktionieren würde?
Wo bestehen die Unterschiede?
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#4

Re: Client - Server Kommunikation(Sockets) umstellen auf Lin

  Alt 7. Jul 2009, 23:25
Bin noch nicht dazu gekommen es auszuprobieren ob es sich portieren lässt.

Wenn ich das hinbekommen sollte, bleibt noch die Frage offen, wie ich mit den normalen Sockets eine SSL Verbindung aufbauen kann,
dazu habe ich bisher nichts gefunden.

Ich tendiere dann doch eher zu den Indy's, die haben SLL Unterstützung und wenn man sie jweils in einem eigenen Thread laufen lässt,
stört es auch nicht weiter das es blocked Sockets im Hintergrund sind.

Bleibt nur die Frage offen, warum hängt sich der Client auf wenn ich mich mittels SSL auf den Server verbinde, denn ohne SSLIOHandler
funktioniert das gane ja.

Hat dahin gegen jemand einen Lösungsansatz?

Gruß

Cyberaxx aka Daniel
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Client - Server Kommunikation(Sockets) umstellen auf Lin

  Alt 9. Jul 2009, 07:17
Guten morgen

Ich habe mich heute noch einmal daran Versucht Indy 10 mit SSL ans laufen zu bekommen.

Ohne SSLIOHandler alles ohne Probleme.

Sobald ich den IO Handler nutze friert die Client Anwendung ein.

Auf dem Server erhalte ich noch die Verbindung das der Client angemeldet ist.
Der Client ansicht liebert mit über die IdTCPCLient Verbindung aber schon nicht mehr das er Verbunden ist.

Über den IOHandler des Clients bekomme ich noch über den OnStatus folgendes bevor sie einfriert.

[CLIENT]: Resolving hostname localhost.
[CLIENT]: Connecting to 127.0.0.1.

Danach geht nichts mehr.

Der SSLIOHandler ist im OI zugeordnet.
Einstellungen:
CertFile: c:\Zertifikat.cer
Method: sslvSSLv2
Mode: sslmUnassigned

Client Anwendung
Delphi-Quellcode:
procedure TForm2.IdTCPClient1Disconnected(Sender: TObject);
begin
  Self.Memo1.Lines.Add('[CLIENT]: Huch');
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
  Self.IdTCPClient1.Connect;
end;

procedure TForm2.IdTCPClient1Connected(Sender: TObject);
begin
  Self.Memo1.Lines.Add('[CLIENT]: Mit Server verbunden');
end;

procedure TForm2.IdSSLIOHandlerSocketOpenSSL1Status(ASender: TObject;
  const AStatus: TIdStatus; const AStatusText: String);
begin
  Self.Memo1.Lines.Add('[CLIENT]: ' + AStatusText);
end;
[Edit]
Wenn ich den Server beende, reagiert die Client Anwendung auch wieder. Ist mir vorher nie aufgefallen.
Dann kommt am Client die Meldung

Zitat:
---------------------------
Project2
---------------------------
Error connecting with SSL.

error:00000006:lib(0):func(0):EVP lib.
---------------------------
OK
---------------------------
Das Zertifikat ist doch aber richtig zugewiesen.
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  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 20:21 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