pub struct Socket {
pub id: usize,
pub domain: SocketDomain,
pub socket_type: SocketType,
pub protocol: SocketProtocol,
pub state: SocketState,
pub local_addr: Option<SocketAddr>,
pub remote_addr: Option<SocketAddr>,
pub options: SocketOptions,
/* private fields */
}Expand description
Generic socket handle
Fields§
§id: usize§domain: SocketDomain§socket_type: SocketType§protocol: SocketProtocol§state: SocketState§local_addr: Option<SocketAddr>§remote_addr: Option<SocketAddr>§options: SocketOptionsImplementations§
Source§impl Socket
impl Socket
Sourcepub fn new(
domain: SocketDomain,
socket_type: SocketType,
protocol: SocketProtocol,
) -> Result<Self, KernelError>
pub fn new( domain: SocketDomain, socket_type: SocketType, protocol: SocketProtocol, ) -> Result<Self, KernelError>
Create a new socket
Sourcepub fn bind(&mut self, addr: SocketAddr) -> Result<(), KernelError>
pub fn bind(&mut self, addr: SocketAddr) -> Result<(), KernelError>
Bind socket to local address
Sourcepub fn listen(&mut self, backlog: usize) -> Result<(), KernelError>
pub fn listen(&mut self, backlog: usize) -> Result<(), KernelError>
Listen for connections (TCP only)
Sourcepub fn connect(&mut self, addr: SocketAddr) -> Result<(), KernelError>
pub fn connect(&mut self, addr: SocketAddr) -> Result<(), KernelError>
Connect to remote address
Sourcepub fn accept(&self) -> Result<(Socket, SocketAddr), KernelError>
pub fn accept(&self) -> Result<(Socket, SocketAddr), KernelError>
Accept incoming connection (TCP only)
Sourcepub fn send(&mut self, data: &[u8], _flags: u32) -> Result<usize, KernelError>
pub fn send(&mut self, data: &[u8], _flags: u32) -> Result<usize, KernelError>
Send data
Sourcepub fn send_to(
&self,
data: &[u8],
dest: SocketAddr,
_flags: u32,
) -> Result<usize, KernelError>
pub fn send_to( &self, data: &[u8], dest: SocketAddr, _flags: u32, ) -> Result<usize, KernelError>
Send data to specific address (UDP)
Sourcepub fn recv(
&mut self,
buffer: &mut [u8],
_flags: u32,
) -> Result<usize, KernelError>
pub fn recv( &mut self, buffer: &mut [u8], _flags: u32, ) -> Result<usize, KernelError>
Receive data
Sourcepub fn recv_from(
&mut self,
buffer: &mut [u8],
_flags: u32,
) -> Result<(usize, SocketAddr), KernelError>
pub fn recv_from( &mut self, buffer: &mut [u8], _flags: u32, ) -> Result<(usize, SocketAddr), KernelError>
Receive data with source address
Sourcepub fn close(&mut self) -> Result<(), KernelError>
pub fn close(&mut self) -> Result<(), KernelError>
Close socket
Sourcepub fn set_option(&mut self, option: SocketOption) -> Result<(), KernelError>
pub fn set_option(&mut self, option: SocketOption) -> Result<(), KernelError>
Set socket option
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Socket
impl RefUnwindSafe for Socket
impl Send for Socket
impl Sync for Socket
impl Unpin for Socket
impl UnwindSafe for Socket
Blanket Implementations§
§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit)