[](https://github.com/vpetrigo/sntpc/actions/workflows/ci.yml)
[](https://crates.io/crates/sntpc-net-std)
[](https://docs.rs/sntpc-net-std)
# sntpc-net-std
Standard library UDP socket adapter for the [`sntpc`](https://crates.io/crates/sntpc) SNTP client library.
## Design Goal
This crate provides a thin wrapper around `std::net::UdpSocket` that implements the `NtpUdpSocket` trait from `sntpc`.
This separation allows:
- **Independent versioning**: Update `sntpc-net-std` without touching core `sntpc`
- **Minimal dependencies**: Only depends on `std` and `sntpc` core
- **Flexibility**: Users can choose their network stack independently
## Usage
Add this to your `Cargo.toml`:
```toml
[dependencies]
sntpc = "0.8"
sntpc-net-std = "1"
```
## Example
```rust
use sntpc::{sync::get_time, NtpContext, StdTimestampGen};
use sntpc_net_std::UdpSocketWrapper;
use std::net::UdpSocket;
let socket = UdpSocket::bind("0.0.0.0:0").expect("Unable to create UDP socket");
let socket = UdpSocketWrapper::new(socket);
let context = NtpContext::new(StdTimestampGen::default ());
// Use with sntpc functions
```
For complete examples, see the [sntpc examples](https://github.com/vpetrigo/sntpc/tree/master/examples).
## License
<sup>
Licensed under either of <a href="LICENSE-APACHE">Apache License, Version 2.0</a> or
<a href="LICENSE-MIT">MIT license</a> at your option.
</sup>
<br>
<sub>
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in this codebase by you, as defined in the Apache-2.0 license,
shall be dual licensed as above, without any additional terms or conditions.
</sub>