PacketPeerUdp
UDP packet peer.
UDP packet peer.
UDP packet peer. Can be used to send and receive raw UDP packets as well as Variants.
Example: Send a packet:
Example: Listen for packets:
Note: When exporting to Android, make sure to enable the INTERNET permission in the Android export preset before exporting the project or using remote deploy. Otherwise, network communication of any kind will be blocked by Android.
Declarations checked against C# SDK 1.0.0. Expand a name to see declarations and documentation.
Constructors1
PacketPeerUdpConstructor
public PacketPeerUdp();Methods13
BindError
public Error Bind(int port, string bindAddress = "*", int recvBufSize = 65536);Binds this PacketPeerUdp to the specified port and bind_address with a buffer size recv_buf_size, allowing it to receive incoming packets.
If bind_address is set to "*" (default), the peer will be bound on all available addresses (both IPv4 and IPv6).
If bind_address is set to "0.0.0.0" (for IPv4) or "::" (for IPv6), the peer will be bound to all available addresses matching that IP type.
If bind_address is set to any valid address (e.g. "192.168.1.101", "::1", etc.), the peer will only be bound to the interface with that address (or fail if no interface with the given address exists).
| Name | Type | Default |
|---|---|---|
port | int | — |
bindAddress | string | "*" |
recvBufSize | int | 65536 |
ErrorClosevoid
public void Close();Closes the PacketPeerUdp's underlying UDP socket.
ConnectToHostError
public Error ConnectToHost(string host, int port);Calling this method connects this UDP peer to the given host/port 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 PacketPeerUdp.SetDestAddress are not allowed). This method does not send any data to the remote peer, to do that, use PacketPeer.PutVar or PacketPeer.PutPacket 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 TLS or DTLS if you feel like your application is transferring sensitive information.
| Name | Type | Default |
|---|---|---|
host | string | — |
port | int | — |
ErrorGetLocalPortint
public int GetLocalPort();Returns the local port to which this peer is bound.
intGetPacketIPstring
public string GetPacketIP();Returns the IP of the remote peer that sent the last packet(that was received with PacketPeer.GetPacket or PacketPeer.GetVar).
stringGetPacketPortint
public int GetPacketPort();Returns the port of the remote peer that sent the last packet(that was received with PacketPeer.GetPacket or PacketPeer.GetVar).
intIsBoundbool
public bool IsBound();Returns whether this PacketPeerUdp is bound to an address and can receive packets.
boolIsSocketConnectedbool
public bool IsSocketConnected();Returns true if the UDP socket is open and has been connected to a remote address. See PacketPeerUdp.ConnectToHost.
boolJoinMulticastGroupError
public Error JoinMulticastGroup(string multicastAddress, string interfaceName);Joins the multicast group specified by multicast_address using the interface identified by interface_name.
You can join the same multicast group with multiple interfaces. Use IP.GetLocalInterfaces to know which are available.
Note: Some Android devices might require the CHANGE_WIFI_MULTICAST_STATE permission for multicast to work.
| Name | Type | Default |
|---|---|---|
multicastAddress | string | — |
interfaceName | string | — |
ErrorLeaveMulticastGroupError
public Error LeaveMulticastGroup(string multicastAddress, string interfaceName);Removes the interface identified by interface_name from the multicast group specified by multicast_address.
| Name | Type | Default |
|---|---|---|
multicastAddress | string | — |
interfaceName | string | — |
ErrorSetBroadcastEnabledvoid
public void SetBroadcastEnabled(bool enabled);Enable or disable sending of broadcast packets (e.g. set_dest_address("255.255.255.255", 4343). This option is disabled by default.
Note: Some Android devices might require the CHANGE_WIFI_MULTICAST_STATE permission and this option to be enabled to receive broadcast packets too.
| Name | Type | Default |
|---|---|---|
enabled | bool | — |
SetDestAddressError
public Error SetDestAddress(string host, int port);Sets the destination address and port for sending packets and variables. A hostname will be resolved using DNS if needed.
Note: PacketPeerUdp.SetBroadcastEnabled must be enabled before sending packets to a broadcast address (e.g. 255.255.255.255).
| Name | Type | Default |
|---|---|---|
host | string | — |
port | int | — |
ErrorWaitError
public Error Wait();Waits for a packet to arrive on the bound address. See PacketPeerUdp.Bind.
Note: PacketPeerUdp.Wait can't be interrupted once it has been called. This can be worked around by allowing the other party to send a specific "death pill" packet like this:
var socket = new PacketPeerUdp();
// Server
socket.SetDestAddress("127.0.0.1", 789);
socket.PutPacket("Time to stop".ToAsciiBuffer());
// Client
while (socket.Wait() == OK)
{
string data = socket.GetPacket().GetStringFromASCII();
if (data == "Time to stop")
{
return;
}
}Error