Click or drag to resize

TcpClient Class

Represents a TCP-based communication client.
Inheritance Hierarchy
SystemObject
  SystemMarshalByRefObject
    System.ComponentModelComponent
      GSF.CommunicationClientBase
        GSF.CommunicationTcpClient

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

The TcpClient type exposes the following members.

Constructors
 NameDescription
Public methodTcpClient Initializes a new instance of the TcpClient class.
Public methodTcpClient(IContainer) Initializes a new instance of the TcpClient class.
Public methodTcpClient(String) Initializes a new instance of the TcpClient 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 TcpClient.
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 propertyIgnoreInvalidCredentials Gets or sets a boolean value that indicates whether the server should ignore errors when the client's credentials are invalid.
Public propertyIntegratedSecurity Gets or sets a boolean value that indicates whether the current Windows account credentials are used for authentication.
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 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 propertyNetworkCredential Gets or sets network credential that is used when IntegratedSecurity is set to true.
Public propertyNoDelay Gets or sets a boolean value that determines if small packets are delivered to the remote host without delay.
Public propertyPayloadAware Gets or sets a boolean value that indicates whether the payload boundaries are to be preserved during transmission.
Public propertyPayloadEndianOrder Gets or sets the endian order to apply for encoding and decoding payload size in a PayloadAware transmission.
Public propertyPayloadMarker Gets or sets the byte sequence used to mark the beginning of a payload in a PayloadAware transmission.
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.
(Inherited from ClientBase)
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 TcpClient.
(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 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 TcpClient 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 TcpClient 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 TcpClient and optionally releases the managed resources.
(Overrides ClientBaseDispose(Boolean))
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 TcpClient 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.
(Inherited from ClientBase)
Protected methodOnConnectionTerminated Raises the ConnectionTerminated event.
(Inherited from ClientBase)
Protected methodOnReceiveData Raises the ReceiveData event.
(Inherited from ClientBase)
Protected methodOnReceiveDataComplete Raises the ReceiveDataComplete event.
(Inherited from ClientBase)
Protected methodOnReceiveDataException(Exception) Raises the ReceiveDataException event.
(Overrides ClientBaseOnReceiveDataException(Exception))
Protected methodOnReceiveDataException(SocketException) Raises the ReceiveDataException event.
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.
(Overrides ClientBaseRequestNextServerIndex)
Public methodSaveSettings Saves TcpClient 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 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 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 memberDefaultIgnoreInvalidCredentials Specifies the default value for the IgnoreInvalidCredentials property.
Public fieldStatic memberDefaultIntegratedSecurity Specifies the default value for the IntegratedSecurity property.
Public fieldStatic memberDefaultMaxSendQueueSize Specifies the default value for the MaxSendQueueSize property.
Public fieldStatic memberDefaultNoDelay Specifies the default value for the NoDelay property.
Public fieldStatic memberDefaultPayloadAware Specifies the default value for the PayloadAware 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
The socket can be bound to a specified interface on a machine with multiple interfaces by specifying the IP of the interface in the ConnectionString (Example: "Server=localhost:8888; Interface=192.168.1.15")
Example
This example shows how to use the TcpClient component:
C#
using System;
using GSF;
using GSF.Communication;
using GSF.Security.Cryptography;
using GSF.IO.Compression;

class Program
{
    static TcpClient s_client;

    static void Main(string[] args)
    {
        // Initialize the client.
        s_client = new TcpClient("Server=localhost:8888");
        s_client.Handshake = false;
        s_client.PayloadAware = false;
        s_client.ReceiveTimeout = -1;
        s_client.MaxConnectionAttempts = 5;
        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