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.
Files
zhangyang-libzt/README.md

66 lines
2.3 KiB
Markdown
Raw Normal View History

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
[![irc](https://img.shields.io/badge/IRC-%23zerotier%20on%20freenode-orange.svg)](https://webchat.freenode.net/?channels=zerotier)
## Example
```
2017-04-21 14:56:42 -07:00
string str = "welcome to the machine";
zts_start("./zt");
2017-05-05 16:46:07 -07:00
while(!zts_running())
2017-04-21 14:56:42 -07:00
sleep(1);
2017-05-05 16:46:07 -07:00
zts_join("e5cd7a7b1c0fa971");
2017-04-21 14:56:42 -07:00
while(!zts_has_address(nwid))
sleep(1);
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) {
printf("error connecting to remote host (%d)\n", err);
}
int wrote = zts_write(fd, str.c_str(), str.length());
zts_close(fd);
```
Bindings also exist for [many popular languages]().
## Build Targets
### Static Library
2017-05-05 16:46:07 -07:00
- `make static_lib SDK_IPV4=1`: Will output to `build/`
### Tests
- `make tests`: Will output to `build/tests/`
2017-05-01 17:44:45 -07:00
Then run the unit test suite with whatever configuration you need. For instance:
2017-05-01 17:44:45 -07:00
To run a single-test IPv4 client/server test:
2017-05-05 16:46:07 -07:00
- Host 1: `./build/selftest zt1 c7cd7c9e1b0f52a2 simple 4 server 8787`
- Host 2: `./build/selftest zt2 c7cd7c9e1b0f52a2 simple 4 client 10.9.9.40 8787`
2017-05-01 17:44:45 -07:00
To run a multi-message IPv4 client/server test:
2017-05-05 19:05:36 -07:00
- Host 1: `./build/test/unit zt2 c7cd7c9e1b0f52a2 simple 4 server 8787 n_bytes 100 50`
- Host 2: `./build/test/unit zt2 c7cd7c9e1b0f52a2 simple 4 client 10.9.9.40 8787 n_bytes 100 50`
2017-05-01 17:44:45 -07:00
- For more unit test examples, see the [testing]() page
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
## 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
- `ZT_DEBUG=1` - Enable core ZeroTier service debugging