> For the complete documentation index, see [llms.txt](https://kinematicsoup.gitbook.io/reactor/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kinematicsoup.gitbook.io/reactor/api-reference/ks.reactor.client/ks.reactor.client.kstcpconnection.md).

# Class ksTCPConnection

Namespace: [KS.Reactor.Client](/reactor/api-reference/ks.reactor.client.md)\
Assembly: KSUnity.dll

Network stream connection using sockets and the TCP protocol.

```csharp
public class ksTCPConnection : ksConnection
```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) ← [ksConnection](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md) ← [ksTCPConnection](/reactor/api-reference/ks.reactor.client/ks.reactor.client.kstcpconnection.md)

#### Inherited Members

[ksConnection.OnDisconnect](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_OnDisconnect), [ksConnection.m\_host](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_m_host), [ksConnection.m\_port](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_m_port), [ksConnection.Address](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_Address), [ksConnection.ReadProgress](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_ReadProgress), [ksConnection.WriteProgress](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_WriteProgress), [ksConnection.IsConnected](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_IsConnected), [ksConnection.Connect(string, ushort, ksConnection.ConnectHandler, object)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_Connect_System_String_System_UInt16_KS_Reactor_Client_ksConnection_ConnectHandler_System_Object_), [ksConnection.Disconnect(bool)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_Disconnect_System_Boolean_), [ksConnection.Read(ksStreamBuffer.Segment, ksConnection.IOHandler, object)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_Read_KS_Reactor_ksStreamBuffer_Segment_KS_Reactor_Client_ksConnection_IOHandler_System_Object_), [ksConnection.Write(ksStreamBuffer.Segment, ksConnection.IOHandler, object)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_Write_KS_Reactor_ksStreamBuffer_Segment_KS_Reactor_Client_ksConnection_IOHandler_System_Object_), [ksConnection.TryResolveHost(string, out IPAddress)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md#KS_Reactor_Client_ksConnection_TryResolveHost_System_String_System_Net_IPAddress__), [object.Equals(object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object\)), [object.Equals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object-system-object\)), [object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode), [object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype), [object.MemberwiseClone()](https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone), [object.ReferenceEquals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals), [object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)

## Constructors

### ksTCPConnection() <a href="#ks_reactor_client_kstcpconnection__ctor" id="ks_reactor_client_kstcpconnection__ctor"></a>

Constructor

```csharp
public ksTCPConnection()
```

## Properties

### Config <a href="#ks_reactor_client_kstcpconnection_config" id="ks_reactor_client_kstcpconnection_config"></a>

Configuration settings used for new TCP connections.

```csharp
public static ksTCPConnection.ConfigSettings Config { get; }
```

#### Property Value

[ksTCPConnection](/reactor/api-reference/ks.reactor.client/ks.reactor.client.kstcpconnection.md).[ConfigSettings](/reactor/api-reference/ks.reactor.client/ks.reactor.client.kstcpconnection/ks.reactor.client.kstcpconnection.configsettings.md)

### IsConnected <a href="#ks_reactor_client_kstcpconnection_isconnected" id="ks_reactor_client_kstcpconnection_isconnected"></a>

Check if a connection to the server is open.

```csharp
public override bool IsConnected { get; }
```

#### Property Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### ReadProgress <a href="#ks_reactor_client_kstcpconnection_readprogress" id="ks_reactor_client_kstcpconnection_readprogress"></a>

Get the progress of the current read operation.

```csharp
public override ksFrameInfo ReadProgress { get; }
```

#### Property Value

[ksFrameInfo](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksframeinfo.md)

### WriteProgress <a href="#ks_reactor_client_kstcpconnection_writeprogress" id="ks_reactor_client_kstcpconnection_writeprogress"></a>

Get the progress of the current write operation.

```csharp
public override ksFrameInfo WriteProgress { get; }
```

#### Property Value

[ksFrameInfo](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksframeinfo.md)

## Methods

### Connect(string, ushort, ConnectHandler, object) <a href="#ks_reactor_client_kstcpconnection_connect_system_string_system_uint16_ks_reactor_client_ksconnection" id="ks_reactor_client_kstcpconnection_connect_system_string_system_uint16_ks_reactor_client_ksconnection"></a>

Establish a connection to a server.

```csharp
public override void Connect(string host, ushort port, ksConnection.ConnectHandler callback, object asyncState = null)
```

#### Parameters

`host` [string](https://learn.microsoft.com/dotnet/api/system.string)

server host name

`port` [ushort](https://learn.microsoft.com/dotnet/api/system.uint16)

server port

`callback` [ksConnection](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md).[ConnectHandler](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection/ks.reactor.client.ksconnection.connecthandler.md)

callback to invoke when the connection attempt completes

`asyncState` [object](https://learn.microsoft.com/dotnet/api/system.object)

asynchronous state

### DiagnoseConnectionFailure(string, ushort) <a href="#ks_reactor_client_kstcpconnection_diagnoseconnectionfailure_system_string_system_uint16" id="ks_reactor_client_kstcpconnection_diagnoseconnectionfailure_system_string_system_uint16"></a>

Diagnose Connection Failure to the server.

```csharp
public static string DiagnoseConnectionFailure(string host, ushort port)
```

#### Parameters

`host` [string](https://learn.microsoft.com/dotnet/api/system.string)

host

`port` [ushort](https://learn.microsoft.com/dotnet/api/system.uint16)

port

#### Returns

[string](https://learn.microsoft.com/dotnet/api/system.string)

error (null if no connection errors could be determined)

### Disconnect(bool) <a href="#ks_reactor_client_kstcpconnection_disconnect_system_boolean" id="ks_reactor_client_kstcpconnection_disconnect_system_boolean"></a>

Disconnect from the server.

```csharp
public override void Disconnect(bool immediate)
```

#### Parameters

`immediate` [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

If this is false, then queued write operations will complete before disconnecting.

### Read(Segment, IOHandler, object) <a href="#ks_reactor_client_kstcpconnection_read_ks_reactor_ksstreambuffer_segment_ks_reactor_client_ksconnect" id="ks_reactor_client_kstcpconnection_read_ks_reactor_ksstreambuffer_segment_ks_reactor_client_ksconnect"></a>

Read data from the connection into a stream buffer segment.

```csharp
public override void Read(ksStreamBuffer.Segment segment, ksConnection.IOHandler callback, object asyncState = null)
```

#### Parameters

`segment` [ksStreamBuffer](/reactor/api-reference/ks.reactor/ks.reactor.ksstreambuffer.md).[Segment](/reactor/api-reference/ks.reactor/ks.reactor.ksstreambuffer/ks.reactor.ksstreambuffer.segment.md)

segment of a larger stream buffer

`callback` [ksConnection](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md).[IOHandler](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection/ks.reactor.client.ksconnection.iohandler.md)

callback to invoke when the read operation completes

`asyncState` [object](https://learn.microsoft.com/dotnet/api/system.object)

asynchronous state

### Write(Segment, IOHandler, object) <a href="#ks_reactor_client_kstcpconnection_write_ks_reactor_ksstreambuffer_segment_ks_reactor_client_ksconnec" id="ks_reactor_client_kstcpconnection_write_ks_reactor_ksstreambuffer_segment_ks_reactor_client_ksconnec"></a>

Write data to the socket.

```csharp
public override void Write(ksStreamBuffer.Segment segment, ksConnection.IOHandler callback, object asyncState = null)
```

#### Parameters

`segment` [ksStreamBuffer](/reactor/api-reference/ks.reactor/ks.reactor.ksstreambuffer.md).[Segment](/reactor/api-reference/ks.reactor/ks.reactor.ksstreambuffer/ks.reactor.ksstreambuffer.segment.md)

segment of a larger stream buffer

`callback` [ksConnection](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md).[IOHandler](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection/ks.reactor.client.ksconnection.iohandler.md)

callback to invoke when the write operation completes

`asyncState` [object](https://learn.microsoft.com/dotnet/api/system.object)

asynchronous state

### OnDisconnect <a href="#ks_reactor_client_kstcpconnection_ondisconnect" id="ks_reactor_client_kstcpconnection_ondisconnect"></a>

Called when the connection is disconnected.

```csharp
public override event ksConnection.DisconnectHandler OnDisconnect
```

#### Event Type

[ksConnection](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection.md).[DisconnectHandler](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconnection/ks.reactor.client.ksconnection.disconnecthandler.md)
