bind_before_connect 0.1.1

Produces a std::net::TCPStream bound to a specified local address (Unix only).
Documentation

bind_before_connect

In older network protocols or when using multiple IP Addresses, one wants to open a connection to a remote host using a specific local port and/or a specific local IP address. In other words you want to specify the local source address.

This can be done using the bind syscall (commonly used to specify the binding address for servers) followed by the connect syscall (commonly used to connect to a remote server). This sequence of syscalls is termed Bind Before Connect.

The constructor of Rust's std::net::TcpStream does not allow specifying a particular local address. It picks a random high port to use. This crate constructs a bound socket then converts it to a std::net::TcpStream for you to use as normal.

At present only Unix-based systems are supported. An implementation for Windows/etc would be very much welcomed.

Usage examples

See examples/simple.rs and run cargo run --example simple.