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

80 lines
2.7 KiB
Markdown
Raw Normal View History

2017-06-14 16:58:48 -07:00
# libzt
2018-07-27 17:28:25 -07:00
Library version of [ZeroTier](https://github.com/zerotier/ZeroTierOne)
2017-06-14 16:58:48 -07:00
***
2017-05-05 18:51:04 -07:00
2017-08-01 14:25:43 -07:00
<a href="https://www.zerotier.com/?pk_campaign=github_libzt"><img src="https://raw.githubusercontent.com/zerotier/ZeroTierOne/master/artwork/ZeroTierIcon.png" width="128" height="128" align="left" hspace="20" vspace="9"></a>
2017-05-05 18:51:04 -07:00
2018-07-27 17:29:10 -07:00
**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](https://en.wikipedia.org/wiki/Salsa20) cipher. For a more in-depth discussion on the technical side of ZeroTier, check out our [Manual](https://www.zerotier.com/manual.shtml?pk_campaign=github_libzt)
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
[![irc](https://img.shields.io/badge/IRC-%23zerotier%20on%20freenode-orange.svg)](https://webchat.freenode.net/?channels=zerotier)
2018-07-27 17:32:08 -07:00
- Pre-built library binaries can be found at: [zerotier.com/download.shtml](https://zerotier.com/download.shtml?pk_campaign=github_libzt)
2018-07-27 16:50:21 -07:00
- Bindings for popular languages like [Scala](examples/scala), [Swift](examples/swift), [Java](examples/java), [Python](examples/python), etc. can be found [here](examples/)
2017-05-30 12:35:18 -07:00
2017-06-14 17:09:18 -07:00
***
2017-10-20 01:25:01 -07:00
### C++ Example
```
2017-10-20 01:25:01 -07:00
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
2017-06-14 17:53:32 -07:00
2017-10-20 01:25:01 -07:00
#include "libzt.h"
2017-10-20 01:25:01 -07:00
int main()
{
char *str = "welcome to the machine";
2018-07-27 16:50:21 -07:00
char *remoteIp = "10.8.8.42";
int remotePort = 8080;
int fd, err = 0;
2017-10-20 01:25:01 -07:00
struct sockaddr_in addr;
addr.sin_family = AF_INET;
2018-07-27 16:50:21 -07:00
addr.sin_addr.s_addr = inet_addr(remoteIp);
addr.sin_port = htons(remotePort);
2017-10-20 01:25:01 -07:00
2018-07-27 16:50:21 -07:00
zts_startjoin("path", 0xc7cd7c981b0f52a2); // config path, network ID
2017-10-20 01:25:01 -07:00
if ((fd = zts_socket(AF_INET, 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");
}
2018-07-27 16:50:21 -07:00
zts_close(fd);
2017-10-20 01:25:01 -07:00
zts_stop();
return 0;
}
```
2018-07-19 17:19:06 -07:00
For an example using only the [Virtual Layer 2](https://www.zerotier.com/manual.shtml#2_2?pk_campaign=github_libzt), see [examples/layer2](examples/layer2/layer2.cpp)
2017-08-01 14:18:21 -07:00
2017-05-30 13:50:27 -07:00
***
### Build
2018-07-27 16:50:21 -07:00
We recommend using [CMake](https://cmake.org/) and [clang](https://en.wikipedia.org/wiki/Clang).
```
git submodule init
git submodule update
make patch
2018-07-27 17:11:08 -07:00
cmake -H. -Bbuild
cmake --build build --config Release
```
2018-07-27 17:11:08 -07:00
Builds are placed in `bin\lib`. Use `--config Debug` for a build with debug info included.
2017-05-30 13:50:27 -07:00
2017-05-30 12:35:18 -07:00
***
2017-10-20 12:52:32 -07:00
### Commercial License
2018-07-27 16:50:21 -07:00
If you want a commercial license to use libzt in your product contact us directly via `contact@zerotier.com`
2018-07-19 17:19:06 -07:00