Ich bin gerade dabei eine kleine Anwendung für den Raspberry Pi zu basteln. Es geht darum dass meine Konsolenanwendung folgenden Link aufruft :
http://corpsman.de/ip_info.php
und das Ergebniss dann weiter verarbeitet. Also habe ich alles notwendige auf dem Pi installiert.
Nun ist es so, dass wenn ich eine Visuelle Anwendung mache und alles ausführe es funktioniert ( auf dem Pi wie meinem Laptop )
in der Consolenanwendung scheint die Lnet Komponente aber leider keine antwort zu bekommen ( effektiv kann ich aber auch nicht sagen ob sie überhaupt sendet )
Habt ihr noch eine Idee ?
Da ich keine Dateien anhängen kann, irgendwas mit SQL-Fehler der Quelltext im Post :
Code: Alles auswählen
Program self_dns;
{$MODE objfpc}{$H+}
Uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
sysutils,
Classes, lnetbase, lHTTPUtil, lhttp
{ you can add units after this };
Type
{ TDummy }
TDummy = Class
public
Function LHTTPClientComponent1Input(ASocket: TLHTTPClientSocket;
ABuffer: PChar; ASize: integer): integer;
End;
Var
receivedIP: String;
received: Boolean;
{ TDummy }
Function TDummy.LHTTPClientComponent1Input(ASocket: TLHTTPClientSocket;
ABuffer: PChar; ASize: integer): integer;
Var
s: String;
Begin
setlength(s, ASize);
move(ABuffer^, s[1], ASize);
receivedIP := trim(s);
writeln(receivedIP);
received := true;
Result := 0;
End;
Var
html: TLHTTPClient;
dummy: TDummy;
aHost, aURI: String;
aPort: word;
Url: String;
Begin
writeln('Detecting the global IP-address...');
dummy := TDummy.Create;
html := TLHTTPClient.Create(Nil);
html.Method := hmGet;
html.Port := 80;
html.OnInput := @dummy.LHTTPClientComponent1Input;
received := false;
writeln('created.');
(*
Auf http://www.Corpsman.de ist eine PHP Datei die macht folgendes :
<?php
echo $_SERVER['REMOTE_ADDR'];
?>
*)
url := 'http://corpsman.de/ip_info.php';
DecomposeURL(URL, aHost, aURI, aPort);
html.Host := aHost;
html.URI := aURI;
html.Port := aPort;
html.SendRequest;
While Not received Do Begin
Sleep(1); // hier bleibt die Anwendung stehen, weil received nie true wird ..
End;
writeln('Received global ip : ' + receivedIP);
html.free;
dummy.free;
End.