AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Lazarus(Linux) idHTTPServer Already in use #98
Thema durchsuchen
Ansicht
Themen-Optionen

Lazarus(Linux) idHTTPServer Already in use #98

Ein Thema von Cyberaxx · begonnen am 14. Dez 2013 · letzter Beitrag vom 16. Dez 2013
Antwort Antwort
Benutzerbild von Cyberaxx
Cyberaxx

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

Lazarus(Linux) idHTTPServer Already in use #98

  Alt 14. Dez 2013, 13:18
Hallo liebe Gemeinde,

aktuell versuche ich mittels Lazarus unter Linux den idHTTPServer in betrieb zu nehmen und scheitere mit der Meldung
Zitat:
EIdSocketError: Socket Error # 98
Address already in use.
Es ist dabei egal welchen Post ich benutze es ist immer die selbe Meldung.

Was kann hier die Ursache sein?
Sollte es etwas geben was von der Art her genau so einfach ist, ich natürlich auch dies versuchen.

Gefunden habe ich im Internet nichts zutreffendes und hier im Forum nur einen Thread mit der Antwort gleich etwas anderes als Indy zu nutzen. Ich würde aber gerne bei Indy bleiben. Der Quelltext ist hier recht schmal um den HTTPServer rum (ca 10 Zeilen). Ich muss nur die Parameter über die URL auslesen und an die RS232 Schnittstelle weiterreichen. Der Aufruf schaut Beispielsweise so aus:
Gelesen werden die drei Paramter und als Rückgabe ein einfacher String gesendet als Erfolgsmeldung.

Delphi-Quellcode:
constructor TMyApplication.Create(TheOwner: TComponent);
begin
  inherited Create(TheOwner);
  
  idHTTPServer1 := TIdHTTPServer.Create(nil);
  idHTTPServer1.DefaultPort := 65000;
  idHTTPServer1.OnCommandGet := idHTTPServer1CommandGet;
  idHTTPServer1.Active := True;
end;

procedure TMyApplication.IdHTTPServer1CommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
  if ARequestInfo.Document = '/then
  begin
    Writeln(ARequestInfo.Params.Text);
    AResponseInfo.ContentText := DateTimeToStr(Now);
  end;
end;
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
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Lazarus(Linux) idHTTPServer Already in use #98

  Alt 14. Dez 2013, 21:29
Ist es eine ältere Indy Version? (Aktuell ist Indy 10.6)

Ich verwende zur Konfiguration (für Indy 10.6, Delphi und Free Pascal) diesen Code, bei dem die Bindings-Property geleert und ein neues Binding angelegt wird:

Delphi-Quellcode:
var
  Binding: TIdSocketHandle;
begin
...
  HTTPServer.Bindings.Clear;

  Binding := HTTPServer.Bindings.Add;
  Binding.IP := Host;
  Binding.Port := Port;
...
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Cyberaxx
Cyberaxx

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

AW: Lazarus(Linux) idHTTPServer Already in use #98

  Alt 15. Dez 2013, 11:29
Hallo und danke für die Antwort.
Es sollte das aktuelle Indy sein. ich wollte gerade schreiben das ich es nun auch habe. Man sollte sich einmal die Demos ansehen bevor man Googelt...

Nachdem ich etwas Zeit damit verbracht hatte die Demo ans laufen zu bekommen habe ich mir das mal angesehen und deine Lösung ist auch die in der Demo.
Allerdings verstehe ich das Bindung auf den Host nicht... Es soll ja von jedem Host aus möglich sein. Diese Einstellung habe ich dann einfach weg gelassen und es läuft Ansonsten hätte dieser Post von dir spätestens jetzt die Lösung gebracht.

Nur warum ist das unter Linux so kompliziert? Windows interessiert dies nicht zusätzlich...
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
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Lazarus(Linux) idHTTPServer Already in use #98

  Alt 15. Dez 2013, 14:28
Allerdings verstehe ich das Bindung auf den Host nicht... Es soll ja von jedem Host aus möglich sein. Diese Einstellung habe ich dann einfach weg gelassen und es läuft Ansonsten hätte dieser Post von dir spätestens jetzt die Lösung gebracht.
Das Zuweisen der Host Property kann man natürlich weglassen, wenn das bei Bindings.Add von Indy erzeugte neue Binding schon den "richtigen" Host (genauer gesagt: Netzwerkadapter) angibt. Oder 0.0.0.0 verwenden für alle Netzwerkadapter.

Nur warum ist das unter Linux so kompliziert? Windows interessiert dies nicht zusätzlich...
Worauf bezieht sich "das" und "dies"?
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Cyberaxx
Cyberaxx

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

AW: Lazarus(Linux) idHTTPServer Already in use #98

  Alt 16. Dez 2013, 06:30
Guten Morgen,

Worauf bezieht sich "das" und "dies"?
Unter Windows DefaultPort und starten, läuft. Unter Linux Socket Error #98
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 09:53 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