Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Embedded HTTP server
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{More citations needed|date=August 2022}} [[File:2453 IP video server.jpg|thumb|148x200px|right|Front and back views of a small IP video server (Sensoray 2453S) with audio and composite video inputs served via [[HTTP server]] and other protocols.]] An '''embedded HTTP server''' is an [[HTTP server]] used in an [[embedded system]]. The HTTP server is usually implemented as a [[software component]] of an [[Application software|application]] (embedded) system that controls and/or monitors a machine with mechanical and/or electrical parts.<ref>{{cite journal |title=Edge Computing Using Embedded Webserver with Mobile Device for Diagnosis and Prediction of Metastasis in Histopathological Images |year=2021 |doi=10.1007/s44196-021-00040-x |last1=Johny |first1=Anil |last2=Madhusoodanan |first2=K. N. |journal=International Journal of Computational Intelligence Systems |volume=14 |s2cid=244923748 |doi-access=free }}</ref> The HTTP server implements the [[Hypertext Transfer Protocol|HTTP]] [[Communications protocol|protocol]] in order to allow communications with one or more local or remote [[User (computing)|users]] using a [[Web browser|browser]]. The aim is to let users to interact with information provided by the embedded system ([[Web user interface|user interface]], data monitoring, [[Data logger|data logging]], data configuration, etc.) via [[Computer network|network]], without using traditional peripherals required for local user interfaces ([[Display device|display]], [[Computer keyboard|keyboard]], etc.).<ref>{{cite web |title=Administering Security for Oracle HTTP server |url=https://docs.oracle.com/en/middleware/fusion-middleware/web-tier/12.2.1.4/secure-ohs/administering-security-oracle-http-server.pdf}}</ref> In some cases the functionalities provided via HTTP server allow also program-to-program communications, e.g. to retrieve data logged about the monitored machine, etc. == Usages == Examples of usage within an embedded application might be (e.g.):{{citation needed|date=December 2021}} * to provide a [[thin client]] interface for a traditional application; * to provide [[Database index|index]]ing, [[report]]ing, and [[debugging]] tools during the development stage; * to implement a protocol for the distribution and acquisition of information to be displayed in the regular interface β possibly a [[web service]], and possibly using [[XML]] as the [[Serialization|data format]]; * to develop a [[web application]]. == Advantages == There are a few advantages to using HTTP to perform the above:{{citation needed|date=December 2021}} * HTTP is a well studied cross-platform protocol and there are mature implementations freely available; * HTTP is seldom blocked by [[Firewall (computing)|firewall]]s and [[intranet]] [[Router (computing)|router]]s; * HTTP clients (e.g. [[web browser]]s) are readily available with all modern computers; * there is a growing tendency of using embedded HTTP servers in applications that parallels the rising trends of [[Home network|home-networking]] and [[ubiquitous computing]]. == Typical requirements == Natural limitations of the platforms where an embedded HTTP server runs contribute to the list of the non-functional requirements of the embedded, or more precise, embeddable HTTP server. Some of these requirements are the following ones.{{citation needed|date=December 2021}} * "Small" [[Random-access memory|RAM]] and [[Read-only memory|ROM]] footprint. The exact size depends on the system, but in many cases anything over several megabytes is not embeddable. * Minimal [[CPU]] utilization. * [[Cross compilation]] support for multiple [[CPU]] and [[operating system]] combinations. * Easy integration with an existing application, including [[static linking]] with the operating system and application. * Serving [[Web page|page]]s from [[Application software|application]] [[Computer memory|memory]] if there is no [[file system]]. * [[Modular programming|Modularity]]. * Single [[Thread (computing)|thread]] and [[Multithreading (software)|multi-thread]] support. For every specific project, requirements can vary significantly. For example, ROM and RAM footprints can be a very serious constraint and limit the choices of the system designer. [[C++]] or [[Java Virtual Machine|JVM]] availability for the system can be another constraint. Frequently performance is an issue, because typical embedded systems run multiple simultaneous tasks and an HTTP server is only one of them and may be configured as a low [[Scheduling (computing)|priority]] [[Task (computing)|task]]. == See also == * [[Comparison of web server software]] * [[Comparison of application servers]] * [[Server (computing)]] * [[HTTP server]] * [[Web server]] ==References== {{Reflist}} == External links == * [https://www.gnu.org/software/libmicrohttpd/ libmicrohttpd] contains an extensive list of embedded HTTP server libraries towards the bottom of the page * [https://www.keil.com/pack/doc/mw/Network/html/group__net_h_t_t_p___func.html Example: functionalities of an embedded HTTP server component] [[Category:Web server software| ]] [[Category:Embedded systems]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Citation needed
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:More citations needed
(
edit
)
Template:Reflist
(
edit
)