4.2 KiB
4.2 KiB
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
| Platform | Static | Shared | Package | Example project/code | Library build instructions |
|---|---|---|---|---|---|
| macOS | libzt.a | libzt.dylib | see below | ||
| iOS | libzt.a | zt.framework | examples/swift | packages/iOS | |
| Windows | libzt.lib (x86), libzt.lib (x64) | libzt.dll (x86), libzt.dll (x64) | examples/cpp/ExampleWindowsCppApp, examples/csharp/ExampleWindowsCSharpApp | see below | |
| Android | libzt.aar | examples/android/ExampleAndroidApp | packages/android | ||
| Linux | see below | see below | see below |
C API: libzt.h Java JNI API: ZeroTier.java
C++ Example
#include <arpa/inet.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 zts_sockaddr_in addr;
addr.sin_family = ZTS_AF_INET;
addr.sin_addr.s_addr = inet_addr(remoteIp);
addr.sin_port = htons(remotePort);
zts_startjoin("path", 0xc7cd7c981b0f52a2); // config path, network ID
printf("nodeId=%llx\n", zts_get_node_id());
if ((fd = zts_socket(ZTS_AF_INET, ZTS_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 update --init && make patch
cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release
or possibly:
cmake -H. -Bbuild --config Release
Then
cmake --build build
Builds are placed in bin\lib
Commercial License
If you want a commercial license to use libzt in your product contact us directly via contact@zerotier.com