Dart.Sockets Namespace > UdpBase Class : SendAsync Method |
'Declaration <SecuritySafeCriticalAttribute()> Public Sub SendAsync( _ ByVal buffer() As Byte, _ ByVal offset As Integer, _ ByVal count As Integer, _ ByVal socketFlags As SocketFlags, _ ByVal destination As IPEndPoint, _ ByVal callback As UdpAsyncCallback, _ ByVal state As Object _ )
'Usage Dim instance As UdpBase Dim buffer() As Byte Dim offset As Integer Dim count As Integer Dim socketFlags As SocketFlags Dim destination As IPEndPoint Dim callback As UdpAsyncCallback Dim state As Object instance.SendAsync(buffer, offset, count, socketFlags, destination, callback, state)
[SecuritySafeCritical()] public void SendAsync( byte[] buffer, int offset, int count, SocketFlags socketFlags, IPEndPoint destination, UdpAsyncCallback callback, object state )
[SecuritySafeCritical()] public: void SendAsync( byte[]* buffer, int offset, int count, SocketFlags socketFlags, IPEndPoint* destination, UdpAsyncCallback* callback, Object* state )
[SecuritySafeCritical()] public: void SendAsync( array<byte>^ buffer, int offset, int count, SocketFlags socketFlags, IPEndPoint^ destination, UdpAsyncCallback^ callback, Object^ state )
Exception | Description |
---|---|
System.ArgumentNullException | buffer is null. |
System.Net.Sockets.SocketException | The remote address is unknown, invalid, or unable to be resolved. |
System.ArgumentOutOfRangeException | The remote port is out of the range of valid values. --or--offset or count is less than 0. |
System.ArgumentException | offset + count is greater than the length of buffer. |
Use the SendAsync method to sent a datagram created from the data contained in buffer to the specified hostNameOrAddress asynchronously.
A UDP datagram provides little functionality over an IP datagram, adding a port number field (allows demultiplexing on the receiving host) and a checksum field (provides basic error handling). Unlike TCP, UDP datagrams are sent as a unit. If SendAsync is called 3 times to send 3 datagrams to a host, the receiving host will have to call Receive 3 times. Also, the size of each datagram sent will equal the size of each datagram received by the receiving host. In addition, since UDP is a connectionless protocol, any datagrams sent to the host are not guaranteed to be delivered. Therefore, any required error checking (outside of UDP's checksum implementation) will have to be done by the application-layer protocol.
To send a broadcast datagram, use "255.255.255.255" as the remote address. To send a multicast datagram, use the multicast group address as the remote address after first joining a multicast group by using JoinMulitcastGroup.