chore: reorg
This commit is contained in:
76
__network/udp_laminar/udp.rs
Normal file
76
__network/udp_laminar/udp.rs
Normal file
@@ -0,0 +1,76 @@
|
||||
//! This module provides examples for the UDP api.
|
||||
//! 1. sending data
|
||||
//! 2. receiving data
|
||||
//! 3. constructing the packet for sending.
|
||||
use std::net::SocketAddr;
|
||||
|
||||
use laminar::{Packet, Result, Socket, SocketEvent};
|
||||
|
||||
/// The socket address of where the server is located.
|
||||
const SERVER_ADDR: &'static str = "127.0.0.1:12345";
|
||||
// The client address from where the data is sent.
|
||||
const CLIENT_ADDR: &'static str = "127.0.0.1:12346";
|
||||
|
||||
fn client_address() -> SocketAddr {
|
||||
CLIENT_ADDR.parse().unwrap()
|
||||
}
|
||||
|
||||
fn server_address() -> SocketAddr {
|
||||
SERVER_ADDR.parse().unwrap()
|
||||
}
|
||||
|
||||
/// This is an example of how to send data to an specific address.
|
||||
pub fn send_data() -> Result<()> {
|
||||
// Setup a udp socket and bind it to the client address.
|
||||
let mut socket = Socket::bind(client_address()).unwrap();
|
||||
|
||||
let packet = construct_packet();
|
||||
|
||||
// next send or packet to the endpoint we earlier putted into the packet.
|
||||
socket.send(packet)
|
||||
}
|
||||
|
||||
/// This is an example of how to receive data over udp.
|
||||
pub fn receive_data() {
|
||||
// setup an udp socket and bind it to the client address.
|
||||
let mut socket = Socket::bind(server_address()).unwrap();
|
||||
|
||||
// Next start receiving.
|
||||
loop {
|
||||
if let Some(result) = socket.recv() {
|
||||
match result {
|
||||
SocketEvent::Packet(packet) => {
|
||||
let endpoint: SocketAddr = packet.addr();
|
||||
let received_data: &[u8] = packet.payload();
|
||||
|
||||
// you can here deserialize your bytes into the data you have passed it when sending.
|
||||
|
||||
println!(
|
||||
"Received packet from: {:?} with length {}",
|
||||
endpoint,
|
||||
received_data.len()
|
||||
);
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// This is an example of how to construct a packet.
|
||||
pub fn construct_packet() -> Packet {
|
||||
// this is the destination address of the packet.
|
||||
let destination: SocketAddr = server_address();
|
||||
|
||||
// lets construct some payload (raw data) for or packet.
|
||||
let raw_data = "example data".as_bytes();
|
||||
|
||||
// lets construct or packet by passing in the destination for this packet and the bytes needed to be send..
|
||||
let packet: Packet = Packet::reliable_unordered(destination, raw_data.to_owned());
|
||||
|
||||
packet
|
||||
}
|
||||
|
||||
// TODO: Use functions in example
|
||||
fn main() {}
|
||||
Reference in New Issue
Block a user