2017-05-05 18:56:57 -07:00
## **ZeroTier SDK**: Embed ZeroTier directly into your app
2017-05-05 18:51:04 -07:00
2017-05-05 19:09:07 -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-05-05 19:12:46 -07:00
**ZeroTier** makes it easy to securely connect devices, servers, cloud VMs, containers, and apps everywhere and manage them at scale. Now, with the SDK you can bake this ability directly into your application or service using your preferred language. We provide a BSD socket-like API to make the integration simple.
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-05-30 13:50:27 -07:00
### Example
2017-04-20 13:39:46 -07:00
```
2017-05-30 13:17:39 -07:00
char *str = "welcome to the machine";
char *nwid = "c7cd7c9e1b0f52a2";
zts_simple_start("./zt", nwid);
2017-04-21 14:56:42 -07:00
if((fd = zts_socket(AF_INET, SOCK_STREAM, 0)) < 0 ) {
printf("error creating ZeroTier socket");
}
if((err = zts_connect(fd, (const struct sockaddr *)addr, sizeof(addr))) < 0 ) {
2017-05-30 13:47:50 -07:00
printf("error (%d) connecting to remote host\n", err);
2017-04-21 14:56:42 -07:00
}
2017-05-30 13:47:50 -07:00
int wrote = 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-05-30 13:50:27 -07:00
Bindings also exist for [many popular languages and platforms ](examples ).
***
2017-04-20 13:39:46 -07:00
2017-04-06 19:16:01 -07:00
### Static Library
2017-05-05 16:46:07 -07:00
- `make static_lib SDK_IPV4=1` : Will output to `build/`
2017-04-20 13:39:46 -07:00
2017-05-30 13:50:27 -07:00
### iOS App Framework
- `make ios_app_framework SDK_IPV4=1` : Will output to `build/`
### macOS App Framework
- `make macos_app_framework SDK_IPV4=1` : Will output to `build/`
2017-05-30 12:35:18 -07:00
***
2017-05-05 16:46:07 -07:00
## IP version flags
2017-05-05 18:51:04 -07:00
- `SDK_IPV4=1`
- `SDK_IPV6=1`
2017-05-05 16:46:07 -07:00
2017-04-06 19:16:01 -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
## Debugging flags
2017-05-05 18:51:04 -07:00
- `SDK_DEBUG=1` - Enable SDK library debugging
2017-06-05 14:26:06 -07:00
- `ZT_DEBUG=1` - Enable core ZeroTier service debugging
### Tests
- See [TESTING.md ](TESTING.md )