2017-06-14 16:58:48 -07:00
# libzt
*Embed ZeroTier directly into your app*
***
2017-05-05 18:51:04 -07:00
2017-06-14 17:09:18 -07:00
< a href = "https://www.zerotier.com" > < img src = "https://github.com/zerotier/ZeroTierOne/raw/master/artwork/AppIcon_87x87.png" align = "left" hspace = "20" vspace = "6" > < / a >
2017-05-05 18:51:04 -07:00
2017-06-14 16:58:48 -07:00
**ZeroTier** makes it easy to securely connect devices, servers, cloud VMs, containers, and apps everywhere and manage them at scale. Now, with **libzt** you can bake this ability directly into your app or service using your preferred language or framework. We provide a BSD socket-like API to make the integration simple.
2017-05-05 19:12:46 -07:00
2017-05-05 19:15:30 -07:00
< hr >
2017-05-05 19:05:36 -07:00
2017-05-05 19:15:30 -07:00
[](https://webchat.freenode.net/?channels=zerotier)
2017-04-06 19:16:01 -07:00
2017-06-07 01:07:09 -07:00
Pre-Built Binaries Here: [zerotier.com/download.shtml ](https://zerotier.com/download.shtml?pk_campaign=github_ZeroTierSDK ).
2017-05-30 12:35:18 -07:00
2017-06-14 17:09:18 -07:00
***
2017-05-30 13:50:27 -07:00
### Example
2017-04-20 13:39:46 -07:00
```
2017-06-14 16:53:59 -07:00
#include "libzt.h"
2017-05-30 13:17:39 -07:00
char *str = "welcome to the machine";
char *nwid = "c7cd7c9e1b0f52a2";
zts_simple_start("./zt", nwid);
2017-06-14 17:15:51 -07:00
fd = zts_socket(AF_INET, SOCK_STREAM, 0);
zts_connect(fd, (const struct sockaddr *)addr, sizeof(addr));
zts_write(fd, str, strlen(str));
2017-04-21 14:56:42 -07:00
zts_close(fd);
2017-04-20 13:39:46 -07:00
```
2017-06-14 17:15:51 -07:00
Bindings for [other languages and platforms ](examples ).
2017-05-30 13:50:27 -07:00
***
2017-04-20 13:39:46 -07:00
2017-06-14 17:15:51 -07:00
### Building
2017-06-08 16:44:25 -07:00
All build targets will output to `build/` .
2017-04-06 19:16:01 -07:00
### Static Library
2017-06-14 16:53:59 -07:00
- `make static_lib`
2017-04-20 13:39:46 -07:00
2017-05-30 13:50:27 -07:00
### iOS App Framework
2017-06-14 16:53:59 -07:00
- `make ios_app_framework`
2017-05-30 13:50:27 -07:00
### macOS App Framework
2017-06-14 16:53:59 -07:00
- `make macos_app_framework`
2017-05-30 13:50:27 -07:00
2017-05-30 12:35:18 -07:00
***
2017-06-14 17:15:51 -07:00
### Using Language Bindings
2017-05-05 18:51:04 -07:00
- `SDK_LANG_JNI=1` : Enable JNI bindings for Java (produces a shared library)
- `SDK_LANG_CSHARP=1`
- `SDK_LANG_PYTHON=1`
- `SDK_LANG_GO=1`
2017-05-05 16:46:07 -07:00
2017-06-14 17:15:51 -07:00
### Debugging flags
- `SDK_DEBUG=1` - For debugging libzt
- `ZT_DEBUG=1` - For debugging the ZeroTier core protocol
2017-06-05 14:26:06 -07:00
### Tests
- See [TESTING.md ](TESTING.md )