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 fn from(
addr: &SocketAddr,
s: &Arc<UdpSocket>,
receiver: Receiver<Vec<u8>>,
mtu: u16,
collecter: Arc<Mutex<Sender<SocketAddr>>>
) -> Self
pub 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
}
socket.close().await.unwarp(); // you need to manually close raknet connection
sourcepub async fn close(&mut self) -> Result<(), RaknetError>
pub async fn close(&mut self) -> Result<(), RaknetError>
Close Raknet Socket
The Raknet Socket needs to be closed manually, and if no valid data packets are received for more than 1 minute, the Raknet connection will be closed automatically. This method can be called repeatedly.
Example
let mut socket = RaknetSocket::connect("127.0.0.1:19132".parse().unwrap()).await.unwrap();
socket.close().await.unwarp();
sourcepub async fn ping(addr: &SocketAddr) -> Result<i64, RaknetError>
pub async fn ping(addr: &SocketAddr) -> Result<i64, RaknetError>
Unconnected ping a Raknet Server and return latency
Example
let latency = 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 1 to 10, indicating a packet loss rate of 90% to 0%.
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);
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