Skip to content

harmless-tech/rust-socks2

Repository files navigation

socks2

Crates.io Version docs.rs Crates.io MSRV

SOCKS proxy support for Rust.

A fork of sfackler/rust-socks.

See changes.

Using

cargo add socks2

[dependencies]
socks2 = "0.4"

Features

client

[dependencies]
socks2 = { version = "0.4", default-features = false, features = ["client"] }
use socks2::Socks4Stream;
use socks2::Socks5Stream;
use std::io::Write;

let mut connection = Socks4Stream::connect(PROXY, &TARGET, "userid", None).unwrap();
let buf = [126_u8; 50]
connection.write(&buf);

let mut connection = Socks5Stream::connect(PROXY, &TARGET, None).unwrap();
let buf = [126_u8; 50]
connection.write(&buf);

bind

[dependencies]
socks2 = { version = "0.4", default-features = false, features = ["bind"] }
use socks2::Socks4Listener;
use socks2::Socks5Listener;

let mut connection = Socks4Listener::bind(PROXY, &TARGET, "userid", None)
    .unwrap()
    .accept();

let mut connection = Socks5Listener::bind(PROXY, &TARGET, None)
    .unwrap()
    .accept();

udp

[dependencies]
socks2 = { version = "0.4", default-features = false, features = ["udp"] }
use socks2::Socks5Datagram;
use std::io::Write;

let mut connection = Socks5Datagram::bind(PROXY, &TARGET, None).unwrap();
let buf = [126_u8; 50]
connection.send_to(&buf, &OTHER_ADDR);

Versioning

socks2 follows Major Zero Semver. The major version is always zero. Every minor version contains breaking changes. Every patch version will be backwards compatible.

Alpha, Betas, and Release Candidates may contain breaking changes between any version.