Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shellrow/nex
Cross-platform networking library in Rust
https://github.com/shellrow/nex
cross-platform network rust
Last synced: 14 days ago
JSON representation
Cross-platform networking library in Rust
- Host: GitHub
- URL: https://github.com/shellrow/nex
- Owner: shellrow
- License: mit
- Created: 2023-11-05T14:28:22.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-07-07T07:59:01.000Z (4 months ago)
- Last Synced: 2024-09-13T11:49:02.963Z (2 months ago)
- Topics: cross-platform, network, rust
- Language: Rust
- Homepage:
- Size: 339 KB
- Stars: 8
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# nex
Cross-platform low-level networking library in Rust
[![Crates.io](https://img.shields.io/crates/v/nex.svg)](https://crates.io/crates/nex)
[![Documentation](https://docs.rs/nex/badge.svg)](https://docs.rs/nex)
[![License](https://img.shields.io/crates/l/nex.svg)](https://github.com/shellrow/nex/blob/main/LICENSE)## Overview
`nex` is a Rust library that provides cross-platform low-level networking capabilities.
It includes a set of modules, each with a specific focus:- `datalink`: Datalink layer networking.
- `packet`: Low-level packet parsing and building.
- `packet-builder`: High-level packet building.
- `socket`: Socket-related functionality.## Upcoming Features
The project has plans to enhance nex with the following features:
- More Protocol Support: Expanding protocol support to include additional network protocols and standards.
- Performance Improvements: Continuously working on performance enhancements for faster network operations.## Usage
To use `nex`, add it as a dependency in your `Cargo.toml`:
```toml
[dependencies]
nex = "0.18"
```## Using Specific Sub-crates
You can also directly use specific sub-crates by importing them individually.
- `nex-datalink`
- `nex-packet`
- `nex-packet-builder`
- `nex-socket`If you want to focus on network interfaces, you can use the [netdev](https://github.com/shellrow/netdev).
## Privileges
`nex-datalink` uses a raw socket which may require elevated privileges depending on your system's configuration.
Execute with administrator privileges if necessary.## for Windows Users
Please note that in order to send and receive raw packets using `nex-datalink` on Windows, [Npcap](https://npcap.com/#download) is required.1. Install Npcap, making sure to check Install Npcap in WinPcap API-compatible Mode during the installation.
2. Download the Npcap SDK. Add the SDK's /Lib/x64 (or /Lib) folder to your LIB environment variable.
## for macOS Users
On macOS, managing access to the Berkeley Packet Filter (BPF) devices is necessary for send and receive raw packets using `nex-datalink`.
You can use [chmod-bpf](https://github.com/shellrow/chmod-bpf) to automatically manage permissions for BPF devices.
Alternatively, of course, you can also use `sudo` to temporarily grant the necessary permissions.## Build time requirements for optional feature
The cryptography provider for `nex-socket`'s optional `tls-aws-lc` feature use `aws-lc-rs`. Note that this has some implications on [build-time tool requirements](https://aws.github.io/aws-lc-rs/requirements/index.html), such as requiring cmake on all platforms and nasm on Windows.
**You can use `ring` as the cryptography provider (without additional dependencies) by specifying the `tls` feature.**## Acknowledgment
This library was heavily inspired by `pnet`, which catalyzed my journey into Rust development.
I am grateful to everyone involved in `pnet` for their pioneering efforts and significant contributions to networking in Rust.Additionally, thank you to all contributors and maintainers of the projects `nex` depends on for your invaluable work and support.