[−][src]Struct gdnative_bindings::PacketPeerUDP
core class PacketPeerUDP inherits PacketPeer (reference counted).
Official documentation
See the documentation of this class in the Godot engine's official documentation.
Memory management
The lifetime of this object is automatically managed through reference counting.
Class hierarchy
PacketPeerUDP inherits methods from:
Safety
All types in the Godot API have "interior mutability" in Rust parlance.
To enforce that the official thread-safety guidelines are
followed, the typestate pattern is used in the Ref and TRef smart pointers,
and the Instance API. The typestate Access in these types tracks whether the
access is unique, shared, or exclusive to the current thread. For more information,
see the type-level documentation on Ref.
Implementations
impl PacketPeerUDP[src]
pub fn new() -> Ref<Self, Unique>[src]
Creates a new instance of this object.
This is a reference-counted type. The returned object is automatically managed
by Ref.
pub fn close(&self)[src]
Closes the UDP socket the [PacketPeerUDP] is currently listening on.
pub fn connect_to_host(
&self,
host: impl Into<GodotString>,
port: i64
) -> GodotResult[src]
&self,
host: impl Into<GodotString>,
port: i64
) -> GodotResult
Calling this method connects this UDP peer to the given [code]host[/code]/[code]port[/code] pair. UDP is in reality connectionless, so this option only means that incoming packets from different addresses are automatically discarded, and that outgoing packets are always sent to the connected address (future calls to [method set_dest_address] are not allowed). This method does not send any data to the remote peer, to do that, use [method PacketPeer.put_var] or [method PacketPeer.put_packet] as usual. See also [UDPServer].
Note: Connecting to the remote peer does not help to protect from malicious attacks like IP spoofing, etc. Think about using an encryption technique like SSL or DTLS if you feel like your application is transfering sensitive information.
pub fn get_packet_ip(&self) -> GodotString[src]
Returns the IP of the remote peer that sent the last packet(that was received with [method PacketPeer.get_packet] or [method PacketPeer.get_var]).
pub fn get_packet_port(&self) -> i64[src]
Returns the port of the remote peer that sent the last packet(that was received with [method PacketPeer.get_packet] or [method PacketPeer.get_var]).
pub fn is_connected_to_host(&self) -> bool[src]
Returns [code]true[/code] if the UDP socket is open and has been connected to a remote address. See [method connect_to_host].
pub fn is_listening(&self) -> bool[src]
Returns whether this [PacketPeerUDP] is listening.
pub fn join_multicast_group(
&self,
multicast_address: impl Into<GodotString>,
interface_name: impl Into<GodotString>
) -> GodotResult[src]
&self,
multicast_address: impl Into<GodotString>,
interface_name: impl Into<GodotString>
) -> GodotResult
Joins the multicast group specified by [code]multicast_address[/code] using the interface identified by [code]interface_name[/code].
You can join the same multicast group with multiple interfaces. Use [method IP.get_local_interfaces] to know which are available.
Note: Some Android devices might require the [code]CHANGE_WIFI_MULTICAST_STATE[/code] permission for multicast to work.
pub fn leave_multicast_group(
&self,
multicast_address: impl Into<GodotString>,
interface_name: impl Into<GodotString>
) -> GodotResult[src]
&self,
multicast_address: impl Into<GodotString>,
interface_name: impl Into<GodotString>
) -> GodotResult
Removes the interface identified by [code]interface_name[/code] from the multicast group specified by [code]multicast_address[/code].
pub fn listen(
&self,
port: i64,
bind_address: impl Into<GodotString>,
recv_buf_size: i64
) -> GodotResult[src]
&self,
port: i64,
bind_address: impl Into<GodotString>,
recv_buf_size: i64
) -> GodotResult
Makes this [PacketPeerUDP] listen on the [code]port[/code] binding to [code]bind_address[/code] with a buffer size [code]recv_buf_size[/code].
If [code]bind_address[/code] is set to [code]"*"[/code] (default), the peer will listen on all available addresses (both IPv4 and IPv6).
If [code]bind_address[/code] is set to [code]"0.0.0.0"[/code] (for IPv4) or [code]"::"[/code] (for IPv6), the peer will listen on all available addresses matching that IP type.
If [code]bind_address[/code] is set to any valid address (e.g. [code]"192.168.1.101"[/code], [code]"::1"[/code], etc), the peer will only listen on the interface with that addresses (or fail if no interface with the given address exists).
Default Arguments
bind_address-"*"recv_buf_size-65536
pub fn set_broadcast_enabled(&self, enabled: bool)[src]
Enable or disable sending of broadcast packets (e.g. [code]set_dest_address("255.255.255.255", 4343)[/code]. This option is disabled by default.
Note: Some Android devices might require the [code]CHANGE_WIFI_MULTICAST_STATE[/code] permission and this option to be enabled to receive broadcast packets too.
pub fn set_dest_address(
&self,
host: impl Into<GodotString>,
port: i64
) -> GodotResult[src]
&self,
host: impl Into<GodotString>,
port: i64
) -> GodotResult
Sets the destination address and port for sending packets and variables. A hostname will be resolved using DNS if needed.
Note: [method set_broadcast_enabled] must be enabled before sending packets to a broadcast address (e.g. [code]255.255.255.255[/code]).
pub fn wait(&self) -> GodotResult[src]
Waits for a packet to arrive on the listening port. See [method listen].
Methods from Deref<Target = PacketPeer>
pub fn get_available_packet_count(&self) -> i64[src]
Returns the number of packets currently available in the ring-buffer.
pub fn encode_buffer_max_size(&self) -> i64[src]
Maximum buffer size allowed when encoding [Variant]s. Raise this value to support heavier memory allocations.
The [method put_var] method allocates memory on the stack, and the buffer used will grow automatically to the closest power of two to match the size of the [Variant]. If the [Variant] is bigger than [code]encode_buffer_max_size[/code], the method will error out with [constant ERR_OUT_OF_MEMORY].
pub fn get_packet(&self) -> ByteArray[src]
Gets a raw packet.
pub fn get_packet_error(&self) -> GodotResult[src]
Returns the error state of the last packet received (via [method get_packet] and [method get_var]).
pub fn get_var(&self, allow_objects: bool) -> Variant[src]
Gets a Variant. If [code]allow_objects[/code] (or [member allow_object_decoding]) is [code]true[/code], decoding objects is allowed.
[b]Warning:[/b] Deserialized objects can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats such as remote code execution.
Default Arguments
allow_objects-false
pub fn is_object_decoding_allowed(&self) -> bool[src]
[i]Deprecated.[/i] Use [code]get_var[/code] and [code]put_var[/code] parameters instead.
If [code]true[/code], the PacketPeer will allow encoding and decoding of object via [method get_var] and [method put_var].
[b]Warning:[/b] Deserialized objects can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats such as remote code execution.
pub fn put_packet(&self, buffer: ByteArray) -> GodotResult[src]
Sends a raw packet.
pub fn put_var(
&self,
var: impl OwnedToVariant,
full_objects: bool
) -> GodotResult[src]
&self,
var: impl OwnedToVariant,
full_objects: bool
) -> GodotResult
Sends a [Variant] as a packet. If [code]full_objects[/code] (or [member allow_object_decoding]) is [code]true[/code], encoding objects is allowed (and can potentially include code).
Default Arguments
full_objects-false
pub fn set_allow_object_decoding(&self, enable: bool)[src]
[i]Deprecated.[/i] Use [code]get_var[/code] and [code]put_var[/code] parameters instead.
If [code]true[/code], the PacketPeer will allow encoding and decoding of object via [method get_var] and [method put_var].
[b]Warning:[/b] Deserialized objects can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats such as remote code execution.
pub fn set_encode_buffer_max_size(&self, max_size: i64)[src]
Maximum buffer size allowed when encoding [Variant]s. Raise this value to support heavier memory allocations.
The [method put_var] method allocates memory on the stack, and the buffer used will grow automatically to the closest power of two to match the size of the [Variant]. If the [Variant] is bigger than [code]encode_buffer_max_size[/code], the method will error out with [constant ERR_OUT_OF_MEMORY].
Trait Implementations
impl Debug for PacketPeerUDP[src]
impl Deref for PacketPeerUDP[src]
impl DerefMut for PacketPeerUDP[src]
fn deref_mut(&mut self) -> &mut PacketPeer[src]
impl GodotObject for PacketPeerUDP[src]
type RefKind = RefCounted
The memory management kind of this type. This modifies the behavior of the
Ref smart pointer. See its type-level documentation for more
information. Read more
fn class_name() -> &'static str[src]
fn null() -> Null<Self>[src]
fn new() -> Ref<Self, Unique> where
Self: Instanciable, [src]
Self: Instanciable,
fn cast<T>(&self) -> Option<&T> where
T: GodotObject + SubClass<Self>, [src]
T: GodotObject + SubClass<Self>,
fn upcast<T>(&self) -> &T where
Self: SubClass<T>,
T: GodotObject, [src]
Self: SubClass<T>,
T: GodotObject,
unsafe fn assume_shared(&self) -> Ref<Self, Shared>[src]
unsafe fn assume_thread_local(&self) -> Ref<Self, ThreadLocal> where
Self: GodotObject<RefKind = RefCounted>, [src]
Self: GodotObject<RefKind = RefCounted>,
unsafe fn assume_unique(&self) -> Ref<Self, Unique>[src]
impl Instanciable for PacketPeerUDP[src]
impl Sealed for PacketPeerUDP[src]
impl SubClass<Object> for PacketPeerUDP[src]
impl SubClass<PacketPeer> for PacketPeerUDP[src]
impl SubClass<Reference> for PacketPeerUDP[src]
Auto Trait Implementations
impl RefUnwindSafe for PacketPeerUDP
impl !Send for PacketPeerUDP
impl !Sync for PacketPeerUDP
impl Unpin for PacketPeerUDP
impl UnwindSafe for PacketPeerUDP
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T> SubClass<T> for T where
T: GodotObject, [src]
T: GodotObject,
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,