Click or drag to resize

UdpClient Class

Represents a UDP-based communication server.
Inheritance Hierarchy
SystemObject
  SystemMarshalByRefObject
    System.ComponentModelComponent
      GSF.CommunicationClientBase
        GSF.CommunicationUdpClient

Namespace: GSF.Communication
Assembly: GSF.Communication (in GSF.Communication.dll) Version: 2.4.218-beta
Syntax
public class UdpClient : ClientBase
View Source

The UdpClient type exposes the following members.

Constructors
 NameDescription
Public methodUdpClient Initializes a new instance of the UdpClient class.
Public methodUdpClient(IContainer) Initializes a new instance of the UdpClient class.
Public methodUdpClient(String) Initializes a new instance of the UdpClient class.
Top
Properties
 NameDescription
Public propertyAllowDualStackSocket Gets or sets a boolean value that determines if dual-mode socket is allowed when endpoint address is IPv6.
Protected propertyCanRaiseEventsGets a value indicating whether the component can raise an event.
(Inherited from Component)
Public propertyClient Gets the Socket object for the UdpClient.
Public propertyConnectionString Gets or sets the data required by the client to connect to the server.
(Inherited from ClientBase)
Public propertyConnectionTime Gets the Time for which the client has been connected to the server.
(Inherited from ClientBase)
Public propertyContainerGets the IContainer that contains the Component.
(Inherited from Component)
Public propertyCurrentState Gets the current ClientState.
(Inherited from ClientBase)
Protected propertyDesignModeGets a value that indicates whether the Component is currently in design mode.
(Inherited from Component)
Public propertyEnabled Gets or sets a boolean value that indicates whether the client is currently enabled.
(Inherited from ClientBase)
Protected propertyEventsGets the list of event handlers that are attached to this Component.
(Inherited from Component)
Public propertyIsDisposed Gets a flag that indicates whether the object has been disposed.
(Inherited from ClientBase)
Public propertyMaxConnectionAttempts Gets or sets the maximum number of times the client will attempt to connect to the server.
(Inherited from ClientBase)
Public propertyMaxPacketSize Gets or sets the maximum expected size for packets being received by this UdpClient.
Public propertyMaxSendQueueSize Gets or sets the maximum size for the send queue before payloads are dumped from the queue.
Public propertyName Gets the unique identifier of the client.
(Inherited from ClientBase)
Public propertyPersistSettings Gets or sets a boolean value that indicates whether the client settings are to be saved to the config file.
(Inherited from ClientBase)
Protected propertyReadIndex Gets or sets current read index for received data buffer incremented at each Read(Byte, Int32, Int32) call.
(Inherited from ClientBase)
Public propertyReceiveBufferSize Gets or sets the size of the buffer used by the client for receiving data from the server.
(Overrides ClientBaseReceiveBufferSize)
Public propertyReceivePacketInfo Gets or sets the flag that determines whether the UDP client should attempt to receive packet info when receiving data from the socket.
Public propertySendBufferSize Gets or sets the size of the buffer used by the client for sending data to the server.
(Inherited from ClientBase)
Public propertyServerIndex Gets the current server index, when multiple server end points are defined.
(Inherited from ClientBase)
Public propertyServerUri Gets the server URI of the UdpClient.
(Overrides ClientBaseServerUri)
Public propertySettingsCategory Gets or sets the category under which the client settings are to be saved to the config file if the PersistSettings property is set to true.
(Inherited from ClientBase)
Public propertySiteGets or sets the ISite of the Component.
(Inherited from Component)
Public propertyStatistics Gets the TransportStatistics for the client connection.
(Inherited from ClientBase)
Public propertyStatus Gets the descriptive status of the client.
(Overrides ClientBaseStatus)
Public propertyTextEncoding Gets or sets the Encoding to be used for the text sent to the server.
(Inherited from ClientBase)
Protected propertyTrackStatistics Determines whether the base class should track statistics.
(Overrides ClientBaseTrackStatistics)
Public propertyTransportProtocol Gets the TransportProtocol used by the client for the transportation of data with the server.
(Inherited from ClientBase)
Top
Methods
 NameDescription
Public methodAddMulticastMembership Adds a multicast membership to the UDP socket.
Public methodBeginInit Performs necessary operations before the client properties are initialized.
(Inherited from ClientBase)
Public methodConnect Connects the client to the server synchronously.
(Inherited from ClientBase)
Public methodConnectAsync Connects the UdpClient to the server asynchronously.
(Overrides ClientBaseConnectAsync)
Public methodCreateObjRefCreates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.
(Inherited from MarshalByRefObject)
Public methodDisconnect Disconnects the UdpClient from the connected server synchronously.
(Overrides ClientBaseDisconnect)
Public methodDisposeReleases all resources used by the Component.
(Inherited from Component)
Protected methodDispose(Boolean) Releases the unmanaged resources used by the UdpClient and optionally releases the managed resources.
(Overrides ClientBaseDispose(Boolean))
Public methodDropMulticastMembership Drops a multicast membership from the UDP socket.
Public methodEndInit Performs necessary operations after the client properties are initialized.
(Inherited from ClientBase)
Public methodEqualsDetermines whether the specified object is equal to the current object.
(Inherited from Object)
Protected methodFinalizeReleases unmanaged resources and performs other cleanup operations before the Component is reclaimed by garbage collection.
(Inherited from Component)
Public methodGetHashCodeServes as the default hash function.
(Inherited from Object)
Public methodGetLifetimeServiceRetrieves the current lifetime service object that controls the lifetime policy for this instance.
(Inherited from MarshalByRefObject)
Protected methodGetServiceReturns an object that represents a service provided by the Component or by its Container.
(Inherited from Component)
Public methodGetTypeGets the Type of the current instance.
(Inherited from Object)
Public methodInitialize Initializes the client.
(Inherited from ClientBase)
Public methodInitializeLifetimeServiceObtains a lifetime service object to control the lifetime policy for this instance.
(Inherited from MarshalByRefObject)
Public methodLoadSettings Loads saved TcpServer settings from the config file if the PersistSettings property is set to true.
(Overrides ClientBaseLoadSettings)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object.
(Inherited from Object)
Protected methodMemberwiseClone(Boolean)Creates a shallow copy of the current MarshalByRefObject object.
(Inherited from MarshalByRefObject)
Protected methodOnConnectionAttempt Raises the ConnectionAttempt event.
(Inherited from ClientBase)
Protected methodOnConnectionEstablished Raises the ConnectionEstablished event.
(Inherited from ClientBase)
Protected methodOnConnectionException Raises the ConnectionException event.
(Overrides ClientBaseOnConnectionException(Exception))
Protected methodOnConnectionTerminated Raises the ConnectionTerminated event.
(Overrides ClientBaseOnConnectionTerminated)
Protected methodOnReceiveData Raises the ReceiveData event.
(Inherited from ClientBase)
Protected methodOnReceiveDataComplete Raises the ReceiveDataComplete event.
(Inherited from ClientBase)
Protected methodOnReceiveDataException Raises the ReceiveDataException event.
(Overrides ClientBaseOnReceiveDataException(Exception))
Protected methodOnSendDataComplete Raises the SendDataComplete event.
(Inherited from ClientBase)
Protected methodOnSendDataException Raises the SendDataException event.
(Overrides ClientBaseOnSendDataException(Exception))
Protected methodOnSendDataStart Raises the SendDataStart event.
(Inherited from ClientBase)
Protected methodOnUnhandledUserException Raises the UnhandledUserException event.
(Inherited from ClientBase)
Public methodRead Reads a number of bytes from the current received data buffer and writes those bytes into a byte array at the specified offset.
(Overrides ClientBaseRead(Byte, Int32, Int32))
Public methodRequestNextServerIndex Requests that the client attempt to move to the next ServerIndex.
(Inherited from ClientBase)
Public methodSaveSettings Saves TcpServer settings to the config file if the PersistSettings property is set to true.
(Overrides ClientBaseSaveSettings)
Public methodSend(Byte) Sends data to the server synchronously.
(Inherited from ClientBase)
Public methodSend(Object) Sends data to the server synchronously.
(Inherited from ClientBase)
Public methodSend(String) Sends data to the server synchronously.
(Inherited from ClientBase)
Public methodSend(Byte, Int32, Int32) Sends data to the server synchronously.
(Inherited from ClientBase)
Public methodSendAsync(Byte) Sends data to the server asynchronously.
(Inherited from ClientBase)
Public methodSendAsync(Object) Sends data to the server asynchronously.
(Inherited from ClientBase)
Public methodSendAsync(String) Sends data to the server asynchronously.
(Inherited from ClientBase)
Public methodSendAsync(Byte, Int32, Int32) Sends data to the server asynchronously.
(Inherited from ClientBase)
Protected methodSendDataAsync Sends data to the server asynchronously.
(Overrides ClientBaseSendDataAsync(Byte, Int32, Int32))
Public methodSendDataToAsync Sends data to the server asynchronously.
Public methodToStringReturns a String containing the name of the Component, if any. This method should not be overridden.
(Inherited from Component)
Protected methodUpdateBytesReceived Updates the Statistics pertaining to bytes received.
(Inherited from ClientBase)
Protected methodUpdateBytesSent Updates the Statistics pertaining to bytes sent.
(Inherited from ClientBase)
Protected methodValidateConnectionString Validates the specified connectionString.
(Overrides ClientBaseValidateConnectionString(String))
Top
Events
 NameDescription
Public eventConnectionAttempt Occurs when client is attempting connection to the server.
(Inherited from ClientBase)
Public eventConnectionEstablished Occurs when client connection to the server is established.
(Inherited from ClientBase)
Public eventConnectionException Occurs when an Exception is encountered during connection attempt to the server.
(Inherited from ClientBase)
Public eventConnectionTerminated Occurs when client connection to the server is terminated.
(Inherited from ClientBase)
Public eventDisposedOccurs when the component is disposed by a call to the Dispose method.
(Inherited from Component)
Public eventReceiveData Occurs when unprocessed data has been received from the server.
(Inherited from ClientBase)
Public eventReceiveDataComplete Occurs when data received from the server has been processed and is ready for consumption.
(Inherited from ClientBase)
Public eventReceiveDataException Occurs when an Exception is encountered when receiving data from the server.
(Inherited from ClientBase)
Public eventReceiveDataFrom Occurs when unprocessed data has been received from the server.
Public eventReceiveDataFromComplete Occurs when data received from the server has been processed and is ready for consumption.
Public eventSendDataComplete Occurs when the client has successfully sent data to the server.
(Inherited from ClientBase)
Public eventSendDataException Occurs when an Exception is encountered when sending data to the server.
(Inherited from ClientBase)
Public eventSendDataStart Occurs when the client begins sending data to the server.
(Inherited from ClientBase)
Public eventUnhandledUserException Occurs when an Exception is encountered in a user-defined function via an event dispatch.
(Inherited from ClientBase)
Top
Fields
 NameDescription
Public fieldStatic memberDefaultAllowDualStackSocket Specifies the default value for the AllowDualStackSocket property.
Public fieldStatic memberDefaultConnectionString Specifies the default value for the ConnectionString property.
Public fieldStatic memberDefaultMaxPacketSize Specifies the default value for the MaxPacketSize property.
Public fieldStatic memberDefaultMaxSendQueueSize Specifies the default value for the MaxSendQueueSize property.
Public fieldStatic memberDefaultReceiveBufferSize Specifies the default value for the ReceiveBufferSize property.
Top
Extension Methods
 NameDescription
Public Extension MethodGetEnumValueOrDefault Gets the enumeration constant for value, if defined in the enumeration, or a default value.
(Defined by EnumExtensions)
Public Extension MethodGetEnumValueOrDefaultT Gets the enumeration constant for this value, if defined in the enumeration, or a default value.
(Defined by EnumExtensions)
Top
Remarks

Use UdpClient when the primary purpose is to receive data.

The Client socket can be bound to a specified interface on a machine with multiple interfaces by specifying the interface in the ConnectionString (Example: "Server=localhost:8888; Port=8989; Interface=127.0.0.1")

The Client socket can be used just for transmitting data without being bound to a local interface by specifying -1 for the port number in the ConnectionString (Example: "Server=localhost:8888; Port=-1")

Example
This example shows how to use the UdpClient component:
C#
using System;
using GSF;
using GSF.Communication;
using GSF.Security.Cryptography;
using GSF.IO.Compression;

class Program
{
    static UdpClient s_client;

    static void Main(string[] args)
    {
        // Initialize the client.
        s_client = new UdpClient("Server=localhost:8888; Port=8989");
        s_client.Handshake = false;
        s_client.ReceiveTimeout = -1;
        s_client.Encryption = CipherStrength.None;
        s_client.Compression = CompressionStrength.NoCompression;
        s_client.SecureSession = false;
        s_client.Initialize();
        // Register event handlers.
        s_client.ConnectionAttempt += s_client_ConnectionAttempt;
        s_client.ConnectionEstablished += s_client_ConnectionEstablished;
        s_client.ConnectionTerminated += s_client_ConnectionTerminated;
        s_client.ReceiveDataComplete += s_client_ReceiveDataComplete;
        // Connect the client.
        s_client.Connect();

        // Transmit user input to the server.
        string input;
        while (string.Compare(input = Console.ReadLine(), "Exit", true) != 0)
        {
            s_client.Send(input);
        }

        // Disconnect the client on shutdown.
        s_client.Dispose();
    }

    static void s_client_ConnectionAttempt(object sender, EventArgs e)
    {
        Console.WriteLine("Client is connecting to server.");
    }

    static void s_client_ConnectionEstablished(object sender, EventArgs e)
    {
        Console.WriteLine("Client connected to server.");
    }

    static void s_client_ConnectionTerminated(object sender, EventArgs e)
    {
        Console.WriteLine("Client disconnected from server.");
    }

    static void s_client_ReceiveDataComplete(object sender, EventArgs<byte[], int> e)
    {
        Console.WriteLine(string.Format("Received data - {0}.", s_client.TextEncoding.GetString(e.Argument1, 0, e.Argument2)));
    }
}
See Also