This crate provides a type that can act as a platform-native socket address
(i.e. libc::sockaddr
)
The std crate provides SocketAddr
for managing socket addresses. However there is no easy way to
convert SocketAddr
from/into a libc::sockaddr
because SocketAddr
has a different internal
layout.
This crate provides OsSocketAddr
which holds a libc::sockaddr
(containing an IPv4 or IPv6
address) and the conversion functions from/into SocketAddr
.
```rust extern crate libc; extern crate os_socketaddr;
use std::net::SocketAddr; use libc::{cint, cvoid, sizet, ssizet}; use os_socketaddr::OsSocketAddr;
fn sendto(socket: cint, buf: &[u8], dst: SocketAddr) -> ssizet { let addr : OsSocketAddr = dst.into(); unsafe { libc::sendto(socket, buf.asptr() as *const cvoid, buf.len() as sizet, 0, addr.asptr(), addr.len()) } }
fn recvfrom(socket: cint, buf: &mut[u8]) -> (ssizet, Option