TcpClient Class

Represents a TCP-based communication client.

Definition

Namespace: Gemstone.Communication
Assembly: Gemstone.Communication (in Gemstone.Communication.dll) Version: 1.0.128 -- Release Build+c4e32e80ee4b39b519c6e4a0a25ff9269b8be666
public class TcpClient : ClientBase
Inheritance
Object    ClientBase    TcpClient

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)));
    }
}

Constructors

TcpClient Initializes a new instance of the TcpClient class.
TcpClient(String) Initializes a new instance of the TcpClient class.

Properties

AllowDualStackSocket Gets or sets a boolean value that determines if dual-mode socket is allowed when endpoint address is IPv6.
Client Gets the Socket object for the TcpClient.
ConnectionString Gets or sets the data required by the client to connect to the server.
(Inherited from ClientBase)
ConnectionTime Gets the Time for which the client has been connected to the server.
(Inherited from ClientBase)
CurrentState Gets the current ClientState.
(Inherited from ClientBase)
Enabled Gets or sets a boolean value that indicates whether the client is currently enabled.
(Inherited from ClientBase)
IgnoreInvalidCredentials Gets or sets a boolean value that indicates whether the server should ignore errors when the client's credentials are invalid.
IntegratedSecurity Gets or sets a boolean value that indicates whether the current Windows account credentials are used for authentication.
IsDisposed Gets a flag that indicates whether the object has been disposed.
(Inherited from ClientBase)
MaxConnectionAttempts Gets or sets the maximum number of times the client will attempt to connect to the server.
(Inherited from ClientBase)
MaxSendQueueSize Gets or sets the maximum size for the send queue before payloads are dumped from the queue.
Name Gets or sets the unique identifier of the server.
(Inherited from ClientBase)
NetworkCredential Gets or sets network credential that is used when IntegratedSecurity is set to true.
NoDelay Gets or sets a boolean value that determines if small packets are delivered to the remote host without delay.
PayloadAware Gets or sets a boolean value that indicates whether the payload boundaries are to be preserved during transmission.
PayloadEndianOrder Gets or sets the endian order to apply for encoding and decoding payload size in a PayloadAware transmission.
PayloadMarker Gets or sets the byte sequence used to mark the beginning of a payload in a PayloadAware transmission.
ReadIndex Gets or sets current read index for received data buffer incremented at each Read(Byte, Int32, Int32) call.
(Inherited from ClientBase)
ReceiveBufferSize Gets or sets the size of the buffer used by the client for receiving data from the server.
(Inherited from ClientBase)
SendBufferSize Gets or sets the size of the buffer used by the client for sending data to the server.
(Inherited from ClientBase)
ServerIndex Gets the current server index, when multiple server end points are defined.
(Inherited from ClientBase)
ServerUri Gets the server URI of the TcpClient.
(Overrides ClientBaseServerUri)
Statistics Gets the TransportStatistics for the client connection.
(Inherited from ClientBase)
Status Gets the descriptive status of the client.
(Overrides ClientBaseStatus)
TextEncoding Gets or sets the Encoding to be used for the text sent to the server.
(Inherited from ClientBase)
TrackStatistics Determines whether the base class should track statistics.
(Overrides ClientBaseTrackStatistics)
TransportProtocol Gets the TransportProtocol used by the client for the transportation of data with the server.
(Inherited from ClientBase)

Methods

Connect Connects the client to the server synchronously.
(Inherited from ClientBase)
ConnectAsync Connects the TcpClient to the server asynchronously.
(Overrides ClientBaseConnectAsync)
Disconnect Disconnects the TcpClient from the connected server synchronously.
(Overrides ClientBaseDisconnect)
Dispose Releases all the resources used by the ClientBase object.
(Inherited from ClientBase)
Dispose(Boolean) Releases the unmanaged resources used by the TcpClient and optionally releases the managed resources.
(Overrides ClientBaseDispose(Boolean))
EqualsDetermines whether the specified object is equal to the current object.
(Inherited from Object)
FinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object)
GetHashCodeServes as the default hash function.
(Inherited from Object)
GetTypeGets the Type of the current instance.
(Inherited from Object)
Initialize Initializes the client.
(Inherited from ClientBase)
MemberwiseCloneCreates a shallow copy of the current Object.
(Inherited from Object)
OnConnectionAttempt Raises the ConnectionAttempt event.
(Inherited from ClientBase)
OnConnectionEstablished Raises the ConnectionEstablished event.
(Inherited from ClientBase)
OnConnectionException Raises the ConnectionException event.
(Inherited from ClientBase)
OnConnectionTerminated Raises the ConnectionTerminated event.
(Inherited from ClientBase)
OnReceiveData Raises the ReceiveData event.
(Inherited from ClientBase)
OnReceiveDataComplete Raises the ReceiveDataComplete event.
(Inherited from ClientBase)
OnReceiveDataException(Exception) Raises the ReceiveDataException event.
(Overrides ClientBaseOnReceiveDataException(Exception))
OnReceiveDataException(SocketException) Raises the ReceiveDataException event.
OnSendDataComplete Raises the SendDataComplete event.
(Inherited from ClientBase)
OnSendDataException Raises the SendDataException event.
(Overrides ClientBaseOnSendDataException(Exception))
OnSendDataStart Raises the SendDataStart event.
(Inherited from ClientBase)
Read 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))
RequestNextServerIndex Requests that the client attempt to move to the next ServerIndex.
(Overrides ClientBaseRequestNextServerIndex)
Send(Byte) Sends data to the server synchronously.
(Inherited from ClientBase)
Send(String) Sends data to the server synchronously.
(Inherited from ClientBase)
Send(Byte, Int32, Int32) Sends data to the server synchronously.
(Inherited from ClientBase)
SendAsync(Byte) Sends data to the server asynchronously.
(Inherited from ClientBase)
SendAsync(String) Sends data to the server asynchronously.
(Inherited from ClientBase)
SendAsync(Byte, Int32, Int32) Sends data to the server asynchronously.
(Inherited from ClientBase)
SendDataAsync Sends data to the server asynchronously.
(Overrides ClientBaseSendDataAsync(Byte, Int32, Int32))
ToStringReturns a string that represents the current object.
(Inherited from Object)
UpdateBytesReceived Updates the Statistics pertaining to bytes received.
(Inherited from ClientBase)
UpdateBytesSent Updates the Statistics pertaining to bytes sent.
(Inherited from ClientBase)
ValidateConnectionString Validates the specified connectionString.
(Overrides ClientBaseValidateConnectionString(String))

Events

ConnectionAttempt Occurs when client is attempting connection to the server.
(Inherited from ClientBase)
ConnectionEstablished Occurs when client connection to the server is established.
(Inherited from ClientBase)
ConnectionException Occurs when an Exception is encountered during connection attempt to the server.
(Inherited from ClientBase)
ConnectionTerminated Occurs when client connection to the server is terminated.
(Inherited from ClientBase)
Disposed Occurs when the ClientBase has been disposed.
(Inherited from ClientBase)
ReceiveData Occurs when unprocessed data has been received from the server.
(Inherited from ClientBase)
ReceiveDataComplete Occurs when data received from the server has been processed and is ready for consumption.
(Inherited from ClientBase)
ReceiveDataException Occurs when an Exception is encountered when receiving data from the server.
(Inherited from ClientBase)
SendDataComplete Occurs when the client has successfully sent data to the server.
(Inherited from ClientBase)
SendDataException Occurs when an Exception is encountered when sending data to the server.
(Inherited from ClientBase)
SendDataStart Occurs when the client begins sending data to the server.
(Inherited from ClientBase)

Fields

DefaultAllowDualStackSocket Specifies the default value for the AllowDualStackSocket property.
DefaultConnectionString Specifies the default value for the ConnectionString property.
DefaultIgnoreInvalidCredentials Specifies the default value for the IgnoreInvalidCredentials property.
DefaultIntegratedSecurity Specifies the default value for the IntegratedSecurity property.
DefaultMaxSendQueueSize Specifies the default value for the MaxSendQueueSize property.
DefaultNoDelay Specifies the default value for the NoDelay property.
DefaultPayloadAware Specifies the default value for the PayloadAware property.

See Also