You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Joseph Henry 5bf60f6d1c
Make Rust address getter return IpAddr instead of String
5 years ago
.github/workflows Add Android AAR workflow 5 years ago
attic Move some out-dated examples to attic, update README.md 5 years ago
examples Update documentation 5 years ago
ext Move Python license into ext/THIRDPARTY.txt 5 years ago
include Update documentation links in READMEs 5 years ago
pkg Make Rust address getter return IpAddr instead of String 5 years ago
src Save reference to managed callback in C# wrapper. Fixes event bug. 5 years ago
test Add address getter method to Python wrapper 5 years ago
.clang-format Update .clang-format to reflect new ZeroTier standard 5 years ago
.gitattributes Tweaked .gitattributes 7 years ago
.gitignore Re-add gradle-wrapper.jar 5 years ago
.gitmodules Remove submodule (curl) 5 years ago
.version Change how build script reads version tag 5 years ago
CMakeLists.txt Add ZeroTierDatagramSocket and ZeroTierServerSocket to Java wrapper 5 years ago
LICENSE.txt Update license file 5 years ago
README Minor Windows build fixes 5 years ago
README.md Update Linux build instructions in README.md 5 years ago
build.ps1 Fix compile-time errors for C# binding on Windows 5 years ago
build.sh Prevent clang-format from messing with auto-generated Python bindings 5 years ago

README.md

ZeroTier Sockets

Part of the ZeroTier SDK

Peer-to-peer and cross-platform encrypted connections built right into your app or service. No drivers, no root, and no host configuration.


Examples | Documentation | Community | Report a Bug

@zerotier r/zerotier

latest libzt version Last Commit Build Status (master branch)

Language/Platform Installation Version Example
C/C++ Build from source version C/C++
C# Install-Package ZeroTier.Sockets C#
Python pip install libzt Python
Rust Coming very soon version Rust
Java ./build.sh host-jar Java
Linux brew install zerotier/tap/libzt version C/C++
macOS brew install zerotier/tap/libzt version C/C++
iOS / iPadOS ./build.sh iphoneos-framework Objective-C, Swift
Android ./build.sh android-aar Java

#include "ZeroTierSockets.h"

int main()
{
    zts_node_start();
    zts_net_join(net_id);
    int fd = zts_bsd_socket(ZTS_AF_INET, ZTS_SOCK_STREAM, 0);
    zts_bsd_connect(fd, ...);
    ...
}

Build from source

git submodule update --init

This project uses CMake as a build system generator. The scripts build.* simplify building and packaging for various targets. There are many targets and configurations not mentioned here.

Platform Build instructions Notes
Linux ./build.sh host "release" build.sh
macOS ./build.sh host "release" build.sh
Windows . .\build.ps1; Build-Host -BuildType "Release" -Arch "x64" build.ps1, Requires PowerShell

Using the host keyword will automatically detect the current machine type and build standard libzt for use in C/C++ (no additional language bindings.) See ./build.sh list for additional target options. libzt depends on cURL for the optional portion of the API that interfaces with our hosted web offering (my.zerotier.com). If you do not need this functionality you can omit it by passing -DZTS_DISABLE_CENTRAL_API=1 to CMake.

Example output:

~/libzt/dist/macos-x64-host-release
├── bin
│   ├── client
│   ├── server
│   └── ...
└── lib
    ├── libzt.a
    └── libzt.dylib

Important directories:

Directory Purpose
dist Contains finished targets (libraries, binaries, packages, etc.)
cache Contains build system caches that can safely be deleted after use.
pkg Contains project, script and spec files to generate packages.

Self-hosting (Optional)

We provide ways for your app or enterprise to function independently from any of our services if desired.

While we do operate a global network of redundant root servers, network controllers and an admin API/UI called Central, some use-cases require full control over the infrastructure and we try to make it as easy as possible to set up your own controllers and root servers: See here to learn more about how to set up your own network controller, and here to learn more about setting up your own roots.

Help

Licensing

ZeroTier and the ZeroTier SDK (libzt and libztcore) are licensed under the BSL version 1.1. ZeroTier is free to use internally in businesses and academic institutions and for non-commercial purposes. Certain types of commercial use such as building closed-source apps and devices based on ZeroTier or offering ZeroTier network controllers and network management as a SaaS service require a commercial license. A small amount of third party code is also included in ZeroTier and is not subject to our BSL license. See AUTHORS.md for a list of third party code, where it is included, and the licenses that apply to it. All of the third party code in ZeroTier is liberally licensed (MIT, BSD, Apache, public domain, etc.). If you want a commercial license to use the ZeroTier SDK in your product contact us directly via contact@zerotier.com