Hi . Um ein paar HTML Kenntnisse wirst du nicht drumherum kommen.
Den Code poste ich, damit PureBasic auch mal eines Tages auf embedded läuft

Wär echt super. Vielleicht geht das ja auch - nur nicht direct und ohne Grafik und ASM über C einbinden???
Hier ein Codeschnipsel. Wahrscheinlich muss man doch gosub benutzen. Irgendwie ist es jetzt einen tick langsamer
Ein Verzeichnis "www" musst du noch anlegen und dort alle html-Dateien hineinschubsen. Bilder wirst du vielleicht selber haben

. Viel Spaß beim durchsuchen vom POST string.
Marcus
Code: Alles auswählen
;
; ------------------------------------------------------------
;
; Atomic Web Server in PureBasic by AlphaSND
;
; (c) 2001 - Fantaisie Software
;
; ------------------------------------------------------------
;
; 25/03/2001
; Added path relative feature. It can be started everywhere
; Added the window to kill it easely
;
; 19/03/2001
; Added some new features (clients closed automatically)
;
; 17/03/2001
; First version.
;
Global ClientID.l
Global EOL$
Procedure.l BuildRequestHeader(*Buffer, DataLength.l, ContentType$)
Length = PokeS(*Buffer, "HTTP/1.1 200 OK"+EOL$) : *Buffer+Length
Length = PokeS(*Buffer, "Date: Wed, 07 Aug 1996 11:15:43 GMT"+EOL$) : *Buffer+Length
Length = PokeS(*Buffer, "Server: Atomic Web Server 0.2b"+EOL$) : *Buffer+Length
Length = PokeS(*Buffer, "Content-Length: "+Str(DataLength)+EOL$) : *Buffer+Length
Length = PokeS(*Buffer, "Content-Type: "+ContentType$+EOL$) : *Buffer+Length
Length = PokeS(*Buffer, EOL$) : *Buffer+Length
ProcedureReturn *Buffer
EndProcedure
Procedure SendHTMLPagePlainType(BaseDirectory$,RequestedFile$)
If ReadFile(0, BaseDirectory$+RequestedFile$)
FileLength = Lof(0)
ContentType$ = "text/html"
*FileBuffer = AllocateMemory(FileLength+200)
*BufferOffset = BuildRequestHeader(*FileBuffer, FileLength, ContentType$)
ReadData(0, *BufferOffset, FileLength)
CloseFile(0)
SendNetworkData(ClientID, *FileBuffer, *BufferOffset-*FileBuffer+FileLength)
FreeMemory(*FileBuffer)
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Procedure SendHTMLPageWithContentType(BaseDirectory$,RequestedFile$)
If ReadFile(0, BaseDirectory$+RequestedFile$)
FileLength = Lof(0)
Select Right(RequestedFile$,4)
Case ".gif"
ContentType$ = "image/gif"
Case ".jpg"
ContentType$ = "image/jpeg"
Case ".txt"
ContentType$ = "text/plain"
Case ".zip"
ContentType$ = "application/zip"
Default
ContentType$ = "text/html"
EndSelect
*FileBuffer = AllocateMemory(FileLength+200)
*BufferOffset = BuildRequestHeader(*FileBuffer, FileLength, ContentType$)
ReadData(0, *BufferOffset, FileLength)
CloseFile(0)
SendNetworkData(ClientID, *FileBuffer, *BufferOffset-*FileBuffer+FileLength)
FreeMemory(*FileBuffer)
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Structure tmp
a.b
EndStructure
Procedure.s ScanPostData(a$, DefaultPage$)
MaxPosition = FindString(a$, Chr(13), 5)
Position = FindString(a$, " ", 5)
If Position < MaxPosition
RequestedFile$ = Mid(a$, 6, Position-5) ; Automatically remove the leading '/'
RequestedFile$ = RTrim(RequestedFile$)
Else
RequestedFile$ = Mid(a$, 6, MaxPosition-5) ; When a command like 'GET /' is sent..
EndIf
If RequestedFile$ = ""
RequestedFile$ = DefaultPage$
Else
*t.tmp = @RequestedFile$
While *t\a <> 0
If *t\a = '/' : *t\a = '\' : EndIf
*t+1
Wend
EndIf
ProcedureReturn RequestedFile$
EndProcedure
Procedure ProcessRequest(BaseDirectory$, RequestedFile$, a$)
If Left(a$, 3) = "GET"
If SendHTMLPageWithContentType(BaseDirectory$,RequestedFile$)=#False
SendHTMLPagePlainType(BaseDirectory$, "AtomicWebServer_Error.html")
EndIf
ElseIf Left(a$, 4) = "POST"
If SendHTMLPageWithContentType(BaseDirectory$,"Index3.html")=#False
SendHTMLPagePlainType(BaseDirectory$, "AtomicWebServer_Error.html")
EndIf
EndIf
EndProcedure
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
Port = 80
BaseDirectory$ = "www/"
DefaultPage$ = "Index.html"
AtomicTitle$ = "Atomic Web Server v1.0"
EOL$ = Chr(13)+Chr(10)
*Buffer = AllocateMemory(10000)
If CreateNetworkServer(0, Port)
OpenWindow(0, 100, 200, 230, 0, "Atomic Web Server (Port "+Str(Port)+")")
Repeat
Repeat
WEvent = WindowEvent()
If WEvent = #PB_Event_CloseWindow : Quit = 1 : EndIf
Until WEvent = 0
SEvent = NetworkServerEvent()
If SEvent
ClientID.l = EventClient()
Select SEvent
Case 1 ; When a new client has been connected...
Case 4 ; When a client has closed the connection...
Default
RequestLength.l = ReceiveNetworkData(ClientID, *Buffer, 2000)
a$ = PeekS(*Buffer)
RequestedFile$ = ScanPostData(a$, DefaultPage$)
ProcessRequest(BaseDirectory$, RequestedFile$, a$)
EndSelect
Else
Delay(20) ; Don't stole the whole CPU !
EndIf
Until Quit = 1
CloseNetworkServer(0)
Else
MessageRequester(AtomicTitle$, "Error: can't create the server (port in use ?).", 0)
EndIf
End
Index.html
Code: Alles auswählen
<HTML>
<CENTER>
Atomic Web Server v0.2</H2>
<font color="red">Welcome !</font> This is the default page.
<H2><a href="Index2.html"><img src="chumon1.jpg" width="481" height="413" alt="" border="0"></a>
</CENTER>
<form action='get' method='post'> <!-- ?suche=&sort= weglasen, ist sinnlos... method='post' beschreibt das übermitteln der Daten per $_POST[""]-->
<input type='text' name='suche' value='meine Variable' /><br /><!-- Hier kann der User den Text eingeben der Mittels der Variable "suche" übergeben wird-->
<input type='submit' value='Ändern' />
</form>
</HTML>
Index2.html
Code: Alles auswählen
<HTML>
<CENTER>
Atomic Web Server v0.2</H2>
<font color="red">Welcome !</font> This is the default page.
<H2><a href="Index.html"><img src="chumon2.jpg" width="481" height="413" alt="" border="0"></a>
</CENTER>
</HTML>
Index3.html
Code: Alles auswählen
<HTML>
<CENTER>
Atomic Web Server v0.2</H2>
<font color="red">Welcome !</font> This is the default page.
<H2><a href="Index.html"><img src="blauhut1.jpg" width="481" height="413" alt="" border="0"></a>
</CENTER>
</HTML>
AtomicWebServer_Error.html
Code: Alles auswählen
<HTML>
<CENTER>
<H2>Atomic Web Server v0.2</H2>
<font color="red">Error 404:</font> Requested file not found.
</CENTER>
</HTML>