Type Alias coap::client::UdpCoAPClient
source · pub type UdpCoAPClient = CoAPClient<UdpTransport>;
Expand description
A CoAP client over UDP. This client can send multicast and broadcasts
Aliased Type§
struct UdpCoAPClient { /* private fields */ }
Implementations§
source§impl UdpCoAPClient
impl UdpCoAPClient
pub async fn new_with_specific_source<A: ToSocketAddrs, B: ToSocketAddrs>( bind_addr: A, peer_addr: B ) -> IoResult<Self>
pub async fn new_udp<A: ToSocketAddrs>(addr: A) -> IoResult<Self>
sourcepub async fn send_all_coap(
&self,
request: &CoapRequest<SocketAddr>,
segment: u8
) -> IoResult<()>
pub async fn send_all_coap( &self, request: &CoapRequest<SocketAddr>, segment: u8 ) -> IoResult<()>
Send a request to all CoAP devices.
- IPv4 AllCoAP multicast address is ‘224.0.1.187’
- IPv6 AllCoAp multicast addresses are ‘ff0?::fd’ Parameter segment is used with IPv6 to determine the first octet. It’s value can be between 0x0 and 0xf. To address multiple segments, you have to call send_all_coap for each of the segments.
pub fn set_broadcast(&self, value: bool) -> IoResult<()>
sourcepub async fn create_receiver_for(
&self,
request: &CoapRequest<SocketAddr>
) -> MessageReceiver
pub async fn create_receiver_for( &self, request: &CoapRequest<SocketAddr> ) -> MessageReceiver
creates a receiver based on a specific request this method can be used if you send a multicast request and expect multiple responses. only use this method if you know what you are doing
use coap_lite::{
RequestType
};
use coap::request::RequestBuilder;
use coap::client::UdpCoAPClient;
async fn foo() {
let segment = 0x0;
let client = UdpCoAPClient::new_udp("127.0.0.1:5683")
.await
.unwrap();
let request = RequestBuilder::new("test-echo", RequestType::Get)
.data(Some(vec![0x51, 0x55, 0x77, 0xE8]))
.confirmable(true)
.build();
let mut receiver = client.create_receiver_for(&request).await;
client.send_all_coap(&request, segment).await.unwrap();
loop {
let recv_packet = receiver.receive().await.unwrap();
assert_eq!(recv_packet.payload, b"test-echo".to_vec());
}
}