12 unstable releases (3 breaking)
|0.4.0-alpha.2||Jan 8, 2021|
|0.4.0-alpha.1||Dec 28, 2020|
|0.3.19||Dec 21, 2020|
|0.3.17||Nov 21, 2020|
|0.2.1||Jun 13, 2017|
#7 in Network programming
801,929 downloads per month
Used in 3,855 crates (76 directly)
Socket2 is a crate that provides utilities for creating and using sockets.
The goal of this crate is to create and use a socket using advanced configuration options (those that are not available in the types in the standard library) without using any unsafe code.
This crate provides as direct as possible access to the system's functionality
for sockets, this means little effort to provide cross-platform utilities. It is
up to the user to know how to use sockets when using this crate. If you don't
know how to create a socket using libc/system calls then this crate is not for
you. Most, if not all, functions directly relate to the equivalent system call
with no error handling applied, so no handling errors such as
EINTR. As a
result using this crate can be a little wordy, but it should give you maximal
flexibility over configuration of sockets.
See the API documentation for more.
Currently Socket2 supports two versions: v0.4 and v0.3. Version 0.4 is developed in the master branch, version 0.3 in the v0.3.x branch.
Socket2 attempts to support the same OS/architectures as Rust does, see https://doc.rust-lang.org/nightly/rustc/platform-support.html. However this is not always possible, below is current list of support OSs.
If your favorite OS is not on the list consider contributing it! See issue #78.
These OSs are tested with each commit in the CI and must always pass the tests.
All functions/types/etc., excluding ones behind the
all feature, must work on
These OSs are currently build in the CI, but not tested. Not all
functions/types/etc. may work on these OSs, even ones not behind the
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.