Struct rust_raknet::RaknetSocket
source · [−]pub struct RaknetSocket { /* private fields */ }
Expand description
Raknet socket wrapper with local and remote.
Implementations
sourceimpl RaknetSocket
impl RaknetSocket
sourcepub async fn from(
addr: &SocketAddr,
s: &Arc<UdpSocket>,
receiver: Receiver<Vec<u8>>,
mtu: u16,
collecter: Arc<Mutex<Sender<SocketAddr>>>
) -> Self
pub async fn from(
addr: &SocketAddr,
s: &Arc<UdpSocket>,
receiver: Receiver<Vec<u8>>,
mtu: u16,
collecter: Arc<Mutex<Sender<SocketAddr>>>
) -> Self
Create a Raknet Socket from a UDP socket with an established Raknet connection
This method is used for RaknetListener, users of the library should not care about it.
sourcepub async fn connect(addr: &SocketAddr) -> Result<Self, RaknetError>
pub async fn connect(addr: &SocketAddr) -> Result<Self, RaknetError>
Connect to a Raknet server and return a Raknet socket
Example
let mut socket = RaknetSocket::connect("127.0.0.1:19132".parse().unwrap()).await.unwrap();
socket.send(&[0xfe], Reliability::ReliableOrdered).await.unwrap();
let buf = socket.recv().await.unwrap();
if buf[0] == 0xfe{
//do something
}
sourcepub async fn close(&mut self) -> Result<(), RaknetError>
pub async fn close(&mut self) -> Result<(), RaknetError>
Close Raknet Socket. Normally you don’t need to call this method, the RaknetSocket will be closed automatically when it is released. This method can be called repeatedly.
Example
let (latency, motd) = socket::RaknetSocket::ping("127.0.0.1:19132".parse().unwrap()).await.unwrap();
assert!((0..10).contains(&latency));
sourcepub async fn ping(addr: &SocketAddr) -> Result<(i64, String), RaknetError>
pub async fn ping(addr: &SocketAddr) -> Result<(i64, String), RaknetError>
Unconnected ping a Raknet Server and return latency and motd.
Example
let (latency, motd) = socket::RaknetSocket::ping("127.0.0.1:19132".parse().unwrap()).await.unwrap();
assert!((0..10).contains(&latency));
sourcepub async fn send(
&mut self,
buf: &[u8],
r: Reliability
) -> Result<(), RaknetError>
pub async fn send(
&mut self,
buf: &[u8],
r: Reliability
) -> Result<(), RaknetError>
Send a packet
packet must be 0xfe
as the first byte, using other values of bytes may cause unexpected errors.
Except Reliability::ReliableOrdered, all other reliability packets must be less than MTU - 60 (default 1340 bytes), otherwise RaknetError::PacketSizeExceedMTU will be returned
Example
let mut socket = RaknetSocket::connect("127.0.0.1:19132".parse().unwrap()).await.unwrap();
socket.send(&[0xfe], Reliability::ReliableOrdered).await.unwrap();
sourcepub async fn recv(&mut self) -> Result<Vec<u8>, RaknetError>
pub async fn recv(&mut self) -> Result<Vec<u8>, RaknetError>
Recv a packet
Example
let mut socket = RaknetSocket::connect("127.0.0.1:19132".parse().unwrap()).await.unwrap();
let buf = socket.recv().await.unwrap();
if buf[0] == 0xfe{
//do something
}
sourcepub fn peer_addr(&self) -> Result<SocketAddr, RaknetError>
pub fn peer_addr(&self) -> Result<SocketAddr, RaknetError>
Returns the socket address of the remote peer of this Raknet connection.
Example
let socket = RaknetSocket::connect("127.0.0.1:19132".parse().unwrap()).await.unwrap();
assert_eq!(socket.peer_addr().unwrap(), SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 19132)));
sourcepub fn local_addr(&self) -> Result<SocketAddr, RaknetError>
pub fn local_addr(&self) -> Result<SocketAddr, RaknetError>
Returns the socket address of the local half of this Raknet connection.
Example
let mut socket = RaknetSocket::connect("127.0.0.1:19132".parse().unwrap()).await.unwrap();
assert_eq!(socket.local_addr().unwrap().ip(), IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)));
sourcepub fn set_loss_rate(&mut self, stage: u8)
pub fn set_loss_rate(&mut self, stage: u8)
Set the packet loss rate and use it for testing
The stage
parameter ranges from 0 to 10, indicating a packet loss rate of 0% to 100%.
Example
let mut socket = RaknetSocket::connect("127.0.0.1:19132".parse().unwrap()).await.unwrap();
// set 20% loss packet rate.
socket.set_loss_rate(8);
Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for RaknetSocket
impl Send for RaknetSocket
impl Sync for RaknetSocket
impl Unpin for RaknetSocket
impl !UnwindSafe for RaknetSocket
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more