Client
The VpnHood client engine finds a server, builds a session with it, and runs the session's tunnel on a VPN adapter. Around it: the VPN service that runs the engine on each platform, and the device provider through which the app starts that service. Each has a contract of its own, for code that must not depend on it.
When to use it
- You connect to VpnHood servers from your own code, without VpnHood's app.
- You build an app layer of your own on the engine.
- To build a whole VPN app, start from VpnHood.AppLib.App or the template instead: they put these together for you.
Which package to take
- The engine: Core.Client.
- The VPN service, on the side that runs the engine: Core.Client.VpnServices.Host, with the host for your platform - Android, iOS, Linux, WindowsTun or WindowsVpnPlugin.
- The app's side of that service: Core.Client.VpnServices.Manager, with the device provider for your platform (Core.Client.Devices).
- Code that must not depend on the engine, such as a UI: Core.Client.Abstractions, for a connection's options, the client's state, its DNS and the errors a connection ends with; Core.Client.VpnServices.Abstractions, for the requests an app sends its VPN service and the connection info it gets back.
Its packages
| Package | What it does | |
|---|---|---|
| VpnHood.Core.Client | The VpnHood VPN client engine: it finds a server, builds a session with it, and runs the session's tunnel on a VPN adapter. | Overview · API |
| VpnHood.Core.Client.Abstractions | What a VpnHood client is told and reports, shared by the app and its VPN service: the connection's options, the client's state, its DNS, and the errors a connection ends with. | Overview · API |
| VpnHood.Core.Client.Devices.Abstractions | The device a VpnHood app runs on, as the app sees it: what it supports, how the app starts the VPN service, and its installed apps. | Overview · API |
| VpnHood.Core.Client.Devices.Android | VpnHood client device provider for Android: the app's side, and what its VPN service shares | Overview · API |
| VpnHood.Core.Client.Devices.Ios | VpnHood client device provider for iOS and tvOS: the app's side, and what its Network Extension shares | Overview · API |
| VpnHood.Core.Client.Devices.Linux | VpnHood client device provider for Linux: the app's side, and what its VPN host shares | Overview · API |
| VpnHood.Core.Client.Devices.WindowsTun | VpnHood client device provider for Windows with WinTun: the app's side, and what its VPN host shares | Overview · API |
| VpnHood.Core.Client.Devices.WindowsVpnPlugin | VpnHood client device provider for the Windows VPN plug-in: the app's side, and what its VPN host shares | Overview · API |
| VpnHood.Core.Client.VpnServices.Abstractions | The VPN service contract: the requests the app sends its VPN service and the connection info it gets back, shared by both sides. | Overview · API |
| VpnHood.Core.Client.VpnServices.Host | The VPN service's side of the contract: it takes the app's requests, connects with the options the app saved, and reports the connection's state back. | Overview · API |
| VpnHood.Core.Client.VpnServices.Host.Android | VpnHood's VPN service on Android: the VPN service's half, which runs the engine | Overview · API |
| VpnHood.Core.Client.VpnServices.Host.Ios | VpnHood's VPN service on iOS and tvOS: the Network Extension's half, which runs the engine | Overview · API |
| VpnHood.Core.Client.VpnServices.Host.Linux | VpnHood's VPN service on Linux: the VPN host's half, which runs the engine | Overview · API |
| VpnHood.Core.Client.VpnServices.Host.WindowsTun | VpnHood's VPN service on Windows with WinTun: the VPN host's half, which runs the engine | Overview · API |
| VpnHood.Core.Client.VpnServices.Host.WindowsVpnPlugin | VpnHood's VPN service as the Windows VPN plug-in: the C#/WinRT component Windows activates and calls in the VPN host, and the service it runs | Overview · API |
| VpnHood.Core.Client.VpnServices.Manager | The app's side of the VPN service contract: it starts the VPN service with its options, follows its state, and sends it the app's requests. | Overview · API |