This folder gives access to the Network Communication Layer used by the mORMot Open Source framework, version 2.
All mormot.net.*.pas
units define client/server communication as used by our framework, especially for its REST features, over sockets, HTTP and WebSockets.
Cross-Platform Raw Sockets API Definition
- Socket Process High-Level Encapsulation
- MAC and IP Addresses Support
- TLS / HTTPS Encryption Abstract Layer
- Efficient Multiple Sockets Polling
TUri
parsing/generating URL wrapperTCrtSocket
Buffered Socket Read/Write Class
The Low-Level Sockets API is encapsultated into a single set of functions, and wrapped around a TNetSocket
abstract helper, and never made public.
HTTP/HTTPS Abstract Process Classes and Definitions
- Shared HTTP Constants and Functions
THttpSocket
Implementing HTTP over plain sockets- Abstract Server-Side Types used e.g. for Client-Server Protocol
HTTP Client Classes
THttpMultiPartStream
for multipart/formdata HTTP POSTTHttpClientSocket
Implementing HTTP client over plain socketsTHttpRequest
Abstract HTTP client classTWinHttp
TWinINet
TWinHttpWebSocketClient
TCurlHTTP
TSimpleHttpClient
Wrapper Class- Cached HTTP Connection to a Remote Server
- Send Email using the
SMTP
Protocol DNS
Resolution Cache formormot.net.sock
NewSocket()
HTTP Server Classes
- Shared Server-Side HTTP Process
THttpServerSocket
/THttpServer
HTTP/1.1 ServerTHttpApiServer
HTTP/1.1 Server Over Windowshttp.sys
ModuleTHttpApiWebSocketServer
Over Windowshttp.sys
Module
Event-Driven Network Classes and Functions
- Low-Level Non-blocking Connections
- Client or Server Asynchronous Process
Used e.g. by both mormot.net.relay
and mormot.net.rtsphttp
to handle thousands on concurrent streams, with minimal resources, in a cross-platform way.
WebSockets Abstract Processing for Client and Server
- WebSockets Frames Definitions
- WebSockets Protocols Implementation
- WebSockets Client and Server Shared Process
TWebSocketProtocolChat
Simple Protocol
WebSockets Bidirectional Client
TWebSocketProcessClient
Processing ClassTHttpClientWebSockets
Bidirectional REST Client
WebSockets Bidirectional Server
TWebSocketProcessServer
Processing ClassTWebSocketServerSocket
Bidirectional REST Server
Asynchronous WebSockets Bidirectional Server
TWebSocketAsyncServer
Event-Driven HTTP/WebSockets ServerTWebSocketAsyncServerRest
Bidirectional REST Server
Secured Tunneling over WebSockets
- Low-level Shared Definitions
- Low-level WebSockets Relaying Protocols
- Public and Private relay process
RTSP Stream Tunnelling over HTTP as defined by Apple at https://goo.gl/CX6VA3
- Low-level HTTP and RTSP Connections
- RTSP over HTTP Tunnelling
Encapsulate a RTSP TCP/IP duplex video stream into two HTTP links, one POST for upgoing commands, and one GET for downloaded video.
TFTP Protocol and Client with RFC 1350/2347/2348/2349/7440 Support
- TFTP Protocol Definitions
Current limitation: no Client code is defined yet - only the raw TFTP protocol.
TFTP Server Processing with RFC 1350/2347/2348/2349/7440 Support
- Abstract UDP Server
- TFTP Connection Thread and State Machine
TTftpServerThread
Server Class
Current limitation: only RRQ requests are supported/tested yet.
Automatic Certificate Management Environment (ACME v2) Client
- Low-Level Cryptographic Wrappers
- JWS HTTP-client implementation
- ACME client implementation
- Let's Encrypt TLS / HTTPS Encryption Certificates Support
- HTTP-01 Let's Encrypt Challenges HTTP Server on port 80