This repository has been archived on 2025-09-14 . You can view files and clone it, but cannot push or open issues or pull requests.
91251c93b89acc1d7ce1ec79f3a84df6d8bb4e8c
libzt
Library version of ZeroTier
libzt makes it easy to securely connect devices, servers, cloud VMs, containers, and apps everywhere and manage them at scale. We provide a socket-like API supporting SOCK_STREAM, SOCK_DGRAM, and SOCK_RAW. There's no need for system-wide virtual interfaces. This connection is exclusive to your app and fully encrypted via the Salsa20 cipher. For a more in-depth discussion on the technical side of ZeroTier, check out our Manual
C++ Example
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include "libzt.h"
int main()
{
char *str = "welcome to the machine";
char *remoteIp = "10.8.8.42";
int remotePort = 8080;
int fd, err = 0;
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr(remoteIp);
addr.sin_port = htons(remotePort);
zts_startjoin("path", 0xc7cd7c981b0f52a2); // config path, network ID
if ((fd = zts_socket(AF_INET, SOCK_STREAM, 0)) < 0) {
printf("error creating socket\n");
}
if ((err = zts_connect(fd, (const struct sockaddr *)&addr, sizeof(addr))) < 0) {
printf("error connecting to remote host\n");
}
if ((err = zts_write(fd, str, strlen(str))) < 0) {
printf("error writing to socket\n");
}
zts_close(fd);
zts_stop();
return 0;
}
For an example using only the Virtual Layer 2, see examples/layer2
Build
We recommend using CMake and clang.
git submodule init
git submodule update
make patch
cmake -H. -Bbuild
cmake --build build --config Release
Builds are placed in bin\lib. Use --config Debug for a build with debug info included.
Commercial License
If you want a commercial license to use libzt in your product contact us directly via contact@zerotier.com
Description
Languages
C++
58%
C
21.6%
C#
5.8%
Java
5%
Rust
3.3%
Other
6.3%