2017-04-06 19:16:01 -07:00
|
|
|
ZeroTier SDK
|
|
|
|
|
======
|
|
|
|
|
|
2017-04-20 13:39:46 -07:00
|
|
|
[](https://webchat.freenode.net/?channels=zerotier)
|
2017-04-06 19:16:01 -07:00
|
|
|
|
2017-04-21 14:56:42 -07:00
|
|
|
Embed ZeroTier directly into your app or service. Connect everything without worrying about how it's actually connected.
|
2017-04-06 19:16:01 -07:00
|
|
|
***
|
|
|
|
|
|
2017-04-20 13:39:46 -07:00
|
|
|
## Example
|
|
|
|
|
|
|
|
|
|
```
|
2017-04-21 14:56:42 -07:00
|
|
|
string str = "welcome to the machine";
|
|
|
|
|
zts_start("./zt");
|
|
|
|
|
while(!zts_service_running())
|
|
|
|
|
sleep(1);
|
|
|
|
|
zts_join_network(nwid);
|
|
|
|
|
int err, sockfd;
|
|
|
|
|
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);
|
2017-04-20 13:39:46 -07:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Bindings also exist for [many popular languages]().
|
|
|
|
|
|
2017-04-06 19:16:01 -07:00
|
|
|
## Build Targets
|
|
|
|
|
### Static Library
|
2017-04-20 13:39:46 -07:00
|
|
|
- `make static_lib`: 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-04-20 13:39:46 -07:00
|
|
|
|
2017-05-01 17:44:45 -07:00
|
|
|
To run a single-test IPv4 client/server test:
|
2017-04-20 13:39:46 -07:00
|
|
|
|
2017-05-01 17:44:45 -07:00
|
|
|
- Host 1: `./build/test/unit zt1 c7cd7c9e1b0f52a2 simple 4 server 8787`
|
|
|
|
|
- Host 2: `./build/test/unit zt2 c7cd7c9e1b0f52a2 simple 4 client 10.9.9.40 8787`
|
2017-04-06 19:16:01 -07:00
|
|
|
|
2017-05-01 17:44:45 -07:00
|
|
|
To run a multi-message IPv4 client/server test:
|
|
|
|
|
- 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'
|
|
|
|
|
|
|
|
|
|
- For more unit test examples, see the [testing]() page
|
|
|
|
|
|
2017-04-06 19:16:01 -07:00
|
|
|
## Using Language Bindings
|
|
|
|
|
`SDK_LANG_JAVA=1`
|
|
|
|
|
`SDK_LANG_CSHARP=1`
|
|
|
|
|
`SDK_LANG_PYTHON=1`
|
2017-04-20 13:39:46 -07:00
|
|
|
`SDK_LANG_GO=1`
|