Forum > Android
LAMW Http-TCP server with Lnet
benohb:
This is the minimal code for making a Http / TCP server using the INET library with LAMW ...Did we forget something :-\
Note: The lnet library (lnetvisual.lpk) cannot be built … Use only the package lnetbase.lpk
You don't need to rebuild Lazarus . Just add a package lnetbase.lpk to your project
--- Code: Pascal [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} --- unit unit1;{$mode objfpc}{$H+}interfaceuses Classes, SysUtils, AndroidWidget, Laz_And_Controls,lNet;type { TAndroidModule1 } TAndroidModule1 = class(jForm) jButton1: jButton; jTimer1: jTimer; FCon: TLTCP; procedure AndroidModule1Create(Sender: TObject); procedure AndroidModule1Destroy(Sender: TObject); procedure jButton1Click(Sender: TObject); procedure jTimer1Timer(Sender: TObject); private procedure OnRe(aSocket: TLSocket); public {public declarations} end;var AndroidModule1: TAndroidModule1; implementation {$R *.lfm} { TAndroidModule1 }procedure TAndroidModule1.AndroidModule1Create(Sender: TObject);begin FCon := TLTCP.Create(nil); // create new TCP connection FCon.OnReceive := @OnRe; FCon.Timeout := 100; // responsive enough, but won't hog cpu FCon.ReuseAddress := True; FCon.Listen(8000); end;procedure TAndroidModule1.AndroidModule1Destroy(Sender: TObject);begin FCon.Free; inherited Destroy;end;procedure TAndroidModule1.jButton1Click(Sender: TObject);begin jTimer1.Enabled:=true;end;procedure TAndroidModule1.jTimer1Timer(Sender: TObject);begin FCon.CallAction;end;procedure TAndroidModule1.OnRe(aSocket: TLSocket);var s,OutputDataString: string; n: Integer;begin if aSocket.GetMessage(s) > 0 then begin // if we received anything (result is in s) FCon.IterReset; // now it points to server socket while FCon.IterNext do begin // while we have clients to echo to OutputDataString := '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"' + ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' + #13#10 + '<html><h1>Teste</h1></html>' + #13#10; FCon.SendMessage('HTTP/1.0 200' + #13#10); FCon.SendMessage('Content-type: Text/Html' + #13#10); FCon.SendMessage('Content-length: ' + IntToStr(Length(OutputDataString)) + #13#10); FCon.SendMessage('Connection: keep-alive' + #13#10); FCon.SendMessage('Date: ' +'Thu, 06 Dec 2018 17:37:18 GMT' + #13#10); FCon.SendMessage('Server: Lazarus Inet' + #13#10); FCon.SendMessage('' + #13#10); FCon.SendMessage(OutputDataString); end; end;end;end.
Mongkey:
:), Awesome, thank you, but anyway not work, got error on fcon.listen(port).
I tried this one:
https://wiki.freepascal.org/Light_Web_Server
Worked, but freezing.
Mongkey:
Waiting loaded or JMPessoa to solve :D
benohb:
--- Quote from: Mongkey on July 01, 2021, 01:23:01 am ---
:) , Awesome, thank you, but anyway not work, got error on fcon.listen(port).
--- End quote ---
It has been working well...then a problem appeared
I tried to understand where the problem is %)
--- Quote ---I tried this one:
https://wiki.freepascal.org/Light_Web_Server
Worked, but freezing.
--- End quote ---
Yes...I'm avoiding this library
I think this example works fine
--- Quote ---LAMW/lamw4linux/usr/share/fpcsrc/release_3_2_2/packages/fcl-web/examples/httpserver/simplehttpserver.pas
--- End quote ---
benohb:
--- Quote from: Mongkey on July 02, 2021, 06:56:40 am ---
Waiting loaded or JMPessoa to solve :D
--- End quote ---
I don't understand... please explain :D
Navigation
[0] Message Index
[#] Next page