Socket Perl Reference Documentation

CkSocket

Current Version: 11.5.0

Chilkat.Socket

Build custom TCP, TLS, proxy, SSH-tunneled, client/server, and socket-level protocols.

Chilkat.Socket is the low-level networking class for applications that need direct control over TCP and TLS communication. It can connect as a client, accept incoming connections, send and receive text or binary data, use proxies or SSH tunnels, configure TLS certificates and socket options, manage timeouts, work with socket sets, collect performance counters, and produce detailed diagnostics and session logs for custom protocol troubleshooting.

TCP client connections

Connect to remote hosts and ports for custom protocols or direct socket-level communication.

TLS and certificates

Use SSL/TLS, inspect certificates, provide client certificates, and control TLS-related behavior when secure sockets are required.

Send and receive data

Send and receive strings, byte data, files, fixed-size blocks, delimiter-terminated messages, or protocol-specific data patterns.

Server-side sockets

Listen for and accept incoming client connections when implementing simple socket servers or custom listener workflows.

Proxy and SSH tunneling

Route socket connections through HTTP proxies, SOCKS proxies, or SSH-tunneled connections when network topology requires it.

Timeouts and diagnostics

Configure connection and read/write timeouts, monitor counters, and use logs and LastErrorText to diagnose connection or protocol failures.

Common pattern: Use Socket when the application is implementing a custom protocol or needs lower-level control than higher-level Chilkat classes provide. Configure the connection, TLS, proxy, timeout, and logging options, connect or accept a client, then send and receive data according to the protocol. Use higher-level classes such as Http, Rest, Ssh, SFtp, or MailMan when the protocol is already directly supported.

Object Creation

$obj = chilkat::CkSocket->new();

Properties

AbortCurrent
# $boolVal is a boolean
$boolVal = $socket->get_AbortCurrent();
$socket->put_AbortCurrent($boolVal);
Introduced in version 9.5.0.58

Set this property to 1 to request cancellation of the method currently executing on this object. It affects operations that can block or take significant time, such as network reads, writes, connection establishment, and long-running asynchronous methods. Fast, nonblocking methods may finish before the cancellation request is observed.

After an operation aborts, Chilkat automatically resets this property to 0. If no operation is running, the next method call clears a previously set value before it begins.

Note: A synchronous call can be cancelled from another thread by setting this property on the same object. The method returns its normal failure value, and LastErrorText describes the abort.

top
AcceptFailReason
# $intVal is an integer
$intVal = $socket->get_AcceptFailReason();
Introduced in version 9.5.0.50

Contains the numeric result for the most recent AcceptNext or deprecated AcceptNextConnection operation. The initial value is 0. It is reset to 0 when an accept begins, remains 0 on success, and is set to a reason code on failure.

May describe an older accept: Connect, send, receive, and ordinary property operations do not clear this property. Read it immediately after the accept operation whose result is being examined.
CodeMeaning
0Success.
1An asynchronous accept operation is already in progress.
3Internal failure, such as an allocation failure.
5No incoming connection was accepted before the wait interval expired.
6The operation was aborted by the application.
9An unspecified fatal socket error occurred.
20The socket has not first been bound and placed into listening mode.
99The Chilkat component is not unlocked.
100TLS internal error.
102Unexpected TLS handshake message.
109Failed to read TLS handshake messages.
114Failed to send the ChangeCipherSpec message.
115Failed to send the Finished message.
116The client's Finished message was invalid.
117Unable to agree on a TLS protocol version.
118Unable to agree on a cipher suite.
119Failed to read the client's ClientHello message.
120Failed to send TLS handshake messages.
121Failed to process the client certificate message.
122Failed to process the client certificate URL message.
123Failed to process the client key-exchange message.
124Failed to process the CertificateVerify message.
125An SSL 2.0 connection attempt was received and rejected.

top
AlpnProtocol
# $strVal is a string
# $ckStr is a CkString
$socket->get_AlpnProtocol($ckStr);
$strVal = $socket->alpnProtocol();
$socket->put_AlpnProtocol($strVal);
Introduced in version 9.5.0.82

Specifies the application-layer protocol name offered in the TLS ALPN extension, such as h2 or http/1.1. Leave it empty when ALPN is not required.

Note: ALPN negotiation does not implement the selected application protocol. The application must still speak that protocol over the established TLS connection.

top
BandwidthThrottleDown
# $intVal is an integer
$intVal = $socket->get_BandwidthThrottleDown();
$socket->put_BandwidthThrottleDown($intVal);
Introduced in version 9.5.0.49

Limits receive throughput to approximately the specified number of bytes per second. The default value is 0, which disables receive throttling.

Note: The limit is approximate and is applied over time; it does not define socket packet sizes or message boundaries.

top
BandwidthThrottleUp
# $intVal is an integer
$intVal = $socket->get_BandwidthThrottleUp();
$socket->put_BandwidthThrottleUp($intVal);
Introduced in version 9.5.0.49

Limits send throughput to approximately the specified number of bytes per second. The default value is 0, which disables send throttling.

Note: The limit is approximate and is applied over time; it does not define socket packet sizes or message boundaries.

More Information and Examples
top
BigEndian
# $boolVal is a boolean
$boolVal = $socket->get_BigEndian();
$socket->put_BigEndian($boolVal);

Controls the byte order used by SendCount and ReceiveCount. The default is 1, which uses big-endian byte order (network byte order). Set it to 0 to use little-endian byte order.

Note: This property applies only to the four-byte count methods. The SendInt16, SendInt32, ReceiveInt16, and ReceiveInt32 methods receive their byte-order choice as an argument.

top
ClientIpAddress
# $strVal is a string
# $ckStr is a CkString
$socket->get_ClientIpAddress($ckStr);
$strVal = $socket->clientIpAddress();
$socket->put_ClientIpAddress($strVal);

Specifies a numeric local IP address to use when binding the socket to a local interface.

  • Outbound connections: Before Connect establishes the connection, the local socket is bound to this address. Leave the property empty to let the operating system choose the local source address.
  • Listeners: BindAndListen and BindAndListenPortRange bind to exactly this address. Leave the property empty to listen on all interfaces: 0.0.0.0 for IPv4 or :: for IPv6.
ClientIpAddressIPv6 preferenceListener bind address
Empty00.0.0.0 (all IPv4 interfaces)
Empty1:: (all IPv6 interfaces)
Explicit addressNot used to choose the familyExactly the specified address
Important: Supply a numeric IPv4 or IPv6 address assigned to the local computer, not a DNS hostname or remote address. Setting 127.0.0.1 or ::1 creates a loopback-only listener that remote computers cannot reach.

top
ClientPort
# $intVal is an integer
$intVal = $socket->get_ClientPort();
$socket->put_ClientPort($intVal);

Specifies the local TCP port to bind before initiating an outbound connection. The default value is 0, which asks the operating system to choose an available ephemeral port.

Important: Setting a fixed client port is unusual and can cause connection failures when the port is already in use or unavailable. Use a nonzero value only when the remote system or network policy explicitly requires a particular source port.

top
ConnectFailReason
# $intVal is an integer
$intVal = $socket->get_ConnectFailReason();

Contains the numeric result for the most recent connect-family operation, including TCP connection and SSH connection/channel setup. The initial value is 0. It is reset to 0 when a connect-family call begins, remains 0 on success, and is set to a reason code on failure.

May describe an older connection attempt: Send, receive, accept, and ordinary property operations do not clear this property. Read it immediately after the connect-family operation whose result is being examined; otherwise it may still contain a reason from an earlier attempt.
CodeMeaning
0Success.
1The hostname is empty.
2DNS lookup failed.
3DNS lookup timed out.
4The operation was aborted by the application.
5Internal failure.
6The TCP connection attempt timed out.
7The connection was rejected or otherwise could not be established.
100TLS internal error.
101Failed to send ClientHello.
102Unexpected TLS handshake message.
103Failed to read ServerHello.
104The server did not provide a certificate.
105Unexpected TLS protocol version.
106Server-certificate verification failed.
107The negotiated TLS protocol version was not permitted.
108An application-defined server-certificate requirement failed.
109Failed to read TLS handshake messages.
110Failed to send the client-certificate message.
111Failed to send the client key-exchange message.
112The client certificate's private key was not accessible.
113Failed to send the client CertificateVerify message.
114Failed to send the ChangeCipherSpec message.
115Failed to send the Finished message.
116The server's Finished message was invalid.
Note: The TCP connection timeout supplied to Connect is distinct from DNS, proxy, and TLS-handshake inactivity limits. See MaxReadIdleMs and MaxSendIdleMs.

top
DebugLogFilePath
# $strVal is a string
# $ckStr is a CkString
$socket->get_DebugLogFilePath($ckStr);
$strVal = $socket->debugLogFilePath();
$socket->put_DebugLogFilePath($strVal);

If set to a file path, this property logs the LastErrorText of each Chilkat method or property call to the specified file. This logging helps identify the context and history of Chilkat calls leading up to any crash or hang, aiding in debugging.

Enabling the VerboseLogging property provides more detailed information. This property is mainly used for debugging rare instances where a Chilkat method call causes a hang or crash, which should generally not happen.

Possible causes of hangs include:

  • A timeout property set to 0, indicating an infinite timeout.
  • A hang occurring within an event callback in the application code.
  • An internal bug in the Chilkat code causing the hang.

More Information and Examples
top
ElapsedSeconds
# $intVal is an integer
$intVal = $socket->get_ElapsedSeconds();

Returns the whole number of seconds elapsed since the most recent call to StartTiming. It returns 0 if timing has not been started or less than one second has elapsed.

Note: This convenience timer is associated with the object; it is not a network timeout and does not affect socket operations.

top
HttpProxyAuthMethod
# $strVal is a string
# $ckStr is a CkString
$socket->get_HttpProxyAuthMethod($ckStr);
$strVal = $socket->httpProxyAuthMethod();
$socket->put_HttpProxyAuthMethod($strVal);

Specifies the authentication method used with an HTTP proxy. Supported values are Basic and NTLM. Leave it empty when the proxy does not require authentication.

Important: Basic proxy credentials are only encoded, not encrypted. Protect them by using an appropriate secure network path to the proxy.

top
HttpProxyDomain
# $strVal is a string
# $ckStr is a CkString
$socket->get_HttpProxyDomain($ckStr);
$strVal = $socket->httpProxyDomain();
$socket->put_HttpProxyDomain($strVal);

Specifies the optional Windows domain used for NTLM authentication to an HTTP proxy. It is ignored unless HttpProxyAuthMethod is NTLM.

top
HttpProxyForHttp
# $boolVal is a boolean
$boolVal = $socket->get_HttpProxyForHttp();
$socket->put_HttpProxyForHttp($boolVal);
Introduced in version 9.5.0.70

Set this property to 1 when the proxied connection will carry HTTP requests, such as when a Rest object uses this socket through UseConnection. The default is 0.

An HTTP client can communicate with a proxy differently from a non-HTTP protocol. For example, plain HTTP commonly sends an absolute request URI to the proxy, whereas other protocols generally require an HTTP CONNECT tunnel.

Important: Set this before connecting through the HTTP proxy. An incorrect value can produce a connection that is established using the wrong proxy mode for the application protocol.

More Information and Examples
top
HttpProxyHostname
# $strVal is a string
# $ckStr is a CkString
$socket->get_HttpProxyHostname($ckStr);
$strVal = $socket->httpProxyHostname();
$socket->put_HttpProxyHostname($strVal);

Specifies the hostname or numeric IP address of the HTTP proxy. Leave it empty to connect directly without an HTTP proxy.

top
HttpProxyPassword
# $strVal is a string
# $ckStr is a CkString
$socket->get_HttpProxyPassword($ckStr);
$strVal = $socket->httpProxyPassword();
$socket->put_HttpProxyPassword($strVal);

Specifies the password used to authenticate with the HTTP proxy. It is used together with HttpProxyUsername and the selected HttpProxyAuthMethod.

Important: Do not write proxy passwords to logs or expose them in diagnostic output.

top
HttpProxyPort
# $intVal is an integer
$intVal = $socket->get_HttpProxyPort();
$socket->put_HttpProxyPort($intVal);

Specifies the TCP port of the HTTP proxy. Common values include 8080 and 3128, but the correct port is determined by the proxy configuration.

top
HttpProxyUsername
# $strVal is a string
# $ckStr is a CkString
$socket->get_HttpProxyUsername($ckStr);
$strVal = $socket->httpProxyUsername();
$socket->put_HttpProxyUsername($strVal);

Specifies the username used to authenticate with the HTTP proxy. It is ignored when the proxy does not require authentication.

top
IsConnected
# $boolVal is a boolean
$boolVal = $socket->get_IsConnected();

Returns 1 when the socket is in its last known connected state; otherwise returns 0. Explicitly closing the socket updates this property immediately.

Important: TCP does not continuously notify an idle application that a peer or network path has disappeared. This property can remain 1 until a read, write, or other socket operation detects the loss. Treat it as a cached state indicator, not a guarantee that the next operation will succeed.

top
KeepAlive
# $boolVal is a boolean
$boolVal = $socket->get_KeepAlive();
$socket->put_KeepAlive($boolVal);
Introduced in version 9.5.0.49

Controls the operating system SO_KEEPALIVE option for the underlying TCP socket. The default is 1.

Note: TCP keepalive is distinct from an application-protocol heartbeat. The operating system controls the keepalive timing and retry policy unless configured by platform-specific means.

top
KeepSessionLog
# $boolVal is a boolean
$boolVal = $socket->get_KeepSessionLog();
$socket->put_KeepSessionLog($boolVal);

Set this property to 1 to record bytes sent and received through this wrapper in SessionLog. The default is 0. Use SessionLogEncoding to choose how bytes are rendered.

Important: Session logs can contain credentials, tokens, private application data, or decrypted TLS payloads. Enable logging only for diagnostics and protect or remove the resulting data.

More Information and Examples
top
LastErrorHtml
# $strVal is a string
# $ckStr is a CkString
$socket->get_LastErrorHtml($ckStr);
$strVal = $socket->lastErrorHtml();

Provides HTML-formatted information about the last called method or property. If a method call fails or behaves unexpectedly, check this property for details. Note that information is available regardless of the method call's success.

top
LastErrorText
# $strVal is a string
# $ckStr is a CkString
$socket->get_LastErrorText($ckStr);
$strVal = $socket->lastErrorText();

Provides plain text information about the last called method or property. If a method call fails or behaves unexpectedly, check this property for details. Note that information is available regardless of the method call's success.

top
LastErrorXml
# $strVal is a string
# $ckStr is a CkString
$socket->get_LastErrorXml($ckStr);
$strVal = $socket->lastErrorXml();

Provides XML-formatted information about the last called method or property. If a method call fails or behaves unexpectedly, check this property for details. Note that information is available regardless of the method call's success.

top
LastMethodFailed
# $boolVal is a boolean
$boolVal = $socket->get_LastMethodFailed();

Returns 1 if the most recent action method called through this wrapper failed; otherwise returns 0. The initial value is 0. An action method clears this state when it begins and leaves it 0 on success or sets it to 1 on failure.

Ordinary value-property getters, such as the local and remote address/port properties, timeout properties, Ssl, BigEndian, and the failure-reason properties, do not change this state. Methods that perform work do change it, including certificate-retrieval methods, BuildHttpGetRequest, and ClearSessionLog.

Check immediately: This property describes only the most recent action method. Another method call may overwrite it before it is examined. Prefer the method's own Boolean return value when one is available.

top
LastMethodSuccess
# $boolVal is a boolean
$boolVal = $socket->get_LastMethodSuccess();
$socket->put_LastMethodSuccess($boolVal);

Indicates the success or failure of the most recent method call: 1 means success, 0 means failure. This property remains unchanged by property setters or getters. This method is present to address challenges in checking for null or Nothing returns in certain programming languages. Note: This property does not apply to methods that return integer values or to boolean-returning methods where the boolean does not indicate success or failure.

top
ListenPort
# $intVal is an integer
$intVal = $socket->get_ListenPort();
Introduced in version 9.5.0.59

Returns the port on which the socket is listening. This is especially useful after calling BindAndListen with port 0, which asks the operating system to select an available port.

top
LocalIpAddress
# $strVal is a string
# $ckStr is a CkString
$socket->get_LocalIpAddress($ckStr);
$strVal = $socket->localIpAddress();

Returns the local numeric IP address for the socket connection currently held by this object. For an outbound connection, this is the source address selected or explicitly bound. For a listener, it is the address on which the socket is listening.

Returns an empty string when the object holds no connection or listener. The value is read from the current connection and is never retained from an earlier connection.

top
LocalPort
# $intVal is an integer
$intVal = $socket->get_LocalPort();

Returns the local TCP port for the socket connection or listener currently held by this object. When binding to port 0, read this property or ListenPort after success to discover the operating-system-selected port.

Returns 0 when the object holds no connection or listener. The value is read from the current connection and is never retained from an earlier connection.

top
MaxReadIdleMs
# $intVal is an integer
$intVal = $socket->get_MaxReadIdleMs();
$socket->put_MaxReadIdleMs($intVal);

Specifies the maximum number of milliseconds that a read-related operation may make no receive progress. A positive value is an inactivity timeout, not a total-operation deadline. The timer restarts each time a successful low-level read transfers at least one byte.

  • 0 means no read-idle timeout and permits an indefinite wait.
  • A positive value limits the longest continuous period with no received data.
  • Negative values have no defined meaning and should not be used.

This property applies to socket receive methods and to protocol exchanges that read from the connection, including TLS handshakes. It also ordinarily governs read inactivity during HTTP/SOCKS proxy negotiation and SSH tunnel setup when no separate timeout is provided.

Idle timeout versus total duration: A long transfer can continue for longer than this value as long as data keeps arriving. The timeout occurs only when no read progress is made for the full configured interval.
Indefinite waits: The default is 0. For operations involving an externally controlled peer, proxy, TLS handshake, or SSH service, consider setting a finite value so an unresponsive endpoint cannot block the operation forever.

top
MaxSendIdleMs
# $intVal is an integer
$intVal = $socket->get_MaxSendIdleMs();
$socket->put_MaxSendIdleMs($intVal);

Specifies the maximum number of milliseconds that a send-related operation may make no write progress. A positive value is an inactivity timeout, not a total-operation deadline. The timer restarts each time a successful low-level write transfers at least one byte.

  • 0 means no send-idle timeout and permits an indefinite wait.
  • A positive value limits the longest continuous period with no send progress.
  • Negative values have no defined meaning and should not be used.

This property applies to socket send methods and to protocol exchanges that write to the connection, including TLS handshakes. It also ordinarily governs write inactivity during HTTP/SOCKS proxy negotiation and SSH tunnel setup when no separate timeout is provided.

Idle timeout versus total duration: A large send can continue for longer than this value while bytes continue to move. The timeout occurs only after the full configured interval passes with no write progress.

top
MyIpAddress
# $strVal is a string
# $ckStr is a CkString
$socket->get_MyIpAddress($ckStr);
$strVal = $socket->myIpAddress();

Returns a local IP address for the computer. On a multihomed system, this is a default or preferred local address and may not be the address used by a particular connection.

Note: This is normally a private or internal address and is not a reliable way to discover a public Internet address behind NAT. For an actual bound or connected socket, use LocalIpAddress and LocalPort.

More Information and Examples
top
NumBytesAvailable
# $intVal is an integer
$intVal = $socket->get_NumBytesAvailable();
Introduced in version 9.5.0.94

Returns the number of bytes immediately available to the socket layer without waiting. On a TLS connection, the value can include encrypted TLS record overhead and therefore does not necessarily equal the amount of application plaintext available.

Important: Do not use this value as a message length. TCP is a byte stream, and a complete application message can arrive in multiple reads or multiple messages can be available together.

top
NumReceivedClientCerts
# $intVal is an integer
$intVal = $socket->get_NumReceivedClientCerts();

Returns the number of client certificates associated with the connection currently held by this object. On a TLS server, read this property on the accepted connection populated by AcceptNext, then call GetRcvdClientCert with indexes from 0 through NumReceivedClientCerts - 1.

Returns 0 when the current connection has no received client certificates or when the object holds no connection. The value is read from the current connection and is never retained from an earlier connection. If ConvertFromSsl removes TLS while preserving the underlying connection, the certificate information can remain associated with that same connection.

Important: Read this property on the accepted connection, not on the listener. Client certificates are normally present only when the server requested mutual TLS authentication.

top
NumSocketsInSet
# $intVal is an integer
$intVal = $socket->get_NumSocketsInSet();

Returns the number of sockets contained in this object's socket set. A normal Socket object becomes a socket set after one or more successful calls to TakeSocket. Listener sockets and connected sockets may coexist in the same set.

A socket whose peer has closed may remain in the set, and remain included in this count, until the next SelectForReading or SelectForWriting. A select operation rebuilds the set and automatically prunes members that no longer have a usable descriptor.

Selection: Use SelectorIndex for a direct set position. After a select call, use SelectorReadIndex or SelectorWriteIndex directly; do not translate the ready index into SelectorIndex.
Socket sets overview: See Socket Sets Overview for an explanation of socket sets, selectors, readiness, ownership, and common usage patterns.

More Information and Examples
top
NumSslAcceptableClientCAs
# $intVal is an integer
$intVal = $socket->get_NumSslAcceptableClientCAs();

Returns the number of acceptable certificate-authority distinguished names supplied by the TLS server for the connection currently held by this object. Use GetSslAcceptableClientCaDn to retrieve each DN by zero-based index.

Returns 0 when the current connection supplied no acceptable-CA list or when the object holds no connection. This value is read from the current connection and is never retained from an earlier connection.

Note: The list is guidance from the server for selecting a client certificate. It does not itself authenticate the server or guarantee that a particular client certificate will be accepted.

top
ObjectId
# $intVal is an integer
$intVal = $socket->get_ObjectId();

Returns the unique identifier assigned to this socket object. The identifier is included in event callbacks so an application can associate a callback with the originating object.

Note: The value is for runtime correlation only and should not be persisted as a durable identifier.

top
PreferIpv6
# $boolVal is a boolean
$boolVal = $socket->get_PreferIpv6();
$socket->put_PreferIpv6($boolVal);

This property and ListenIpv6 are two names for the same underlying setting. Reading or writing either property reads or changes the same value. The default is 0.

  • Outbound connections: When a hostname resolves to both IPv4 and IPv6 addresses, 0 prefers IPv4 and 1 prefers IPv6.
  • Listeners: When ClientIpAddress is empty, 0 binds to 0.0.0.0 and 1 binds to ::. When an explicit ClientIpAddress is set, its literal address determines the family.
Note: A preference does not guarantee that the selected address family is usable. Connection success still depends on DNS results, local routing, firewall policy, and peer availability.

top
RcvBytesPerSec
# $intVal is an integer
$intVal = $socket->get_RcvBytesPerSec();
Introduced in version 9.5.0.78

Returns the average raw receive rate, in bytes per second, since receive performance measurement began or was last reset. The measurement includes TLS or SSH framing overhead. Call ResetPerf with 1 to restart receive measurement.

top
ReceivedCount
# $intVal is an integer
$intVal = $socket->get_ReceivedCount();
$socket->put_ReceivedCount($intVal);

Tracks the cumulative number of application bytes actually received from the connection by receive operations. The application may assign 0 at any time to restart the count.

Bytes pulled from the connection remain included even when the receive method ultimately returns failure. A failed call does not roll the counter back. For example, partial bytes consumed before a timeout, abort, close, or reset are still counted, even when the method does not return those bytes to the caller.

The count can be greater than the number of bytes returned by a particular method because Chilkat may read beyond a delimiter or exact requested length and buffer the excess for a later receive call. TLS and SSH framing overhead is not included.

Note: Use RcvBytesPerSec when measuring raw transfer rate including protocol overhead.

top
ReceivedInt
# $intVal is an integer
$intVal = $socket->get_ReceivedInt();
$socket->put_ReceivedInt($intVal);
Introduced in version 9.5.0.50

Contains the value produced by the most recent successful call through this wrapper to ReceiveByte, ReceiveInt16, or ReceiveInt32. The initial value is 0. The signedness and byte order are determined by the arguments supplied to the receive method.

This property is never cleared automatically. It changes only after a successful integer receive or when the application explicitly assigns a value to it. A failed integer receive leaves the previous value unchanged.

May contain a stale value: Read ReceivedInt only after the corresponding receive method has returned success. After a failed call it may still contain a valid-looking value from an earlier operation.

top
ReceiveFailReason
# $intVal is an integer
$intVal = $socket->get_ReceiveFailReason();
Introduced in version 9.5.0.49

Contains the numeric result for the most recent receive-side operation. The initial value is 0. It is reset to 0 when a receive begins, remains 0 on success, and is set to a reason code on failure.

May describe an older receive: Connect, accept, send, and ordinary property operations do not clear this property. Read it immediately after the receive operation whose result is being examined.
CodeMeaning
0Success.
1An asynchronous receive operation is already in progress.
2The socket is not connected.
3Internal failure, such as an allocation failure.
4Invalid parameters were supplied. For delimiter-based receives, this includes an empty match string or a match string that encodes to zero bytes.
5No additional data arrived within MaxReadIdleMs.
6The operation was aborted by the application.
7The peer reset the connection.
8The host operating system aborted the established connection.
9An unspecified fatal socket error occurred.
10The peer closed the connection normally. The method reports failure, but its output may still contain final data received immediately before the close.
Failure does not imply zero received bytes: A receive method may consume bytes before it fails. Those bytes remain counted by ReceivedCount. Depending on the receive method, partial data may be returned, appended to the destination, or discarded. Consult the specific method description.
Connection state after failure: A timeout or application abort generally leaves the connection open. A peer close or reset leaves it unavailable for further I/O, although the Socket object may still be closed or reused for a new Connect operation.

top
ReceivePacketSize
# $intVal is an integer
$intVal = $socket->get_ReceivePacketSize();
$socket->put_ReceivePacketSize($intVal);

Controls the maximum number of bytes requested by availability-based receive methods when Chilkat must perform a direct read from a plain TCP connection. The default value is 4096.

  • For plain TCP, methods such as ReceiveBytes, ReceiveBd, ReceiveString, and ReceiveSb obtain at most this many bytes from one underlying socket read.
  • For TLS and SSH connections, the amount returned is governed by the TLS record or SSH packet and is not limited by this property.
  • Data already buffered internally by Chilkat is returned in full, even when it exceeds ReceivePacketSize.
TCP framing: This property is not a message-size setting. TCP is a byte stream and does not preserve application message boundaries.

top
RemoteIpAddress
# $strVal is a string
# $ckStr is a CkString
$socket->get_RemoteIpAddress($ckStr);
$strVal = $socket->remoteIpAddress();

Returns the numeric IP address of the peer for the connection currently held by this object. This is the address actually used by the established connection, which may differ from the hostname originally supplied to Connect.

Returns an empty string when the object holds no connected peer. The value is read from the current connection and is never retained from an earlier connection.

top
RemotePort
# $intVal is an integer
$intVal = $socket->get_RemotePort();

Returns the TCP port of the peer for the connection currently held by this object.

Returns 0 when the object holds no connected peer. The value is read from the current connection and is never retained from an earlier connection.

top
RequireSslCertVerify
# $boolVal is a boolean
$boolVal = $socket->get_RequireSslCertVerify();
$socket->put_RequireSslCertVerify($boolVal);

Controls verification of a server certificate when this object acts as a TLS client. The default is 0.

When 1, the TLS connection is rejected if the server certificate is expired, not yet valid, has an invalid signature, or cannot be verified through a trusted certificate chain. When 0, these normal certificate-validity and trust-chain checks are not required.

Independent checks: RequireSslCertVerify controls normal certificate verification. Public-key pinning configured by TlsPinSet is a separate check and is enforced whenever a pin set is present, even when this property is 0.

top
SelectorIndex
# $intVal is an integer
$intVal = $socket->get_SelectorIndex();
$socket->put_SelectorIndex($intVal);

Selects a socket by its direct zero-based position in this object's socket set. Valid values range from 0 through NumSocketsInSet - 1. While this selector is active, ordinary connection methods and properties are routed to that contained socket.

Mutually exclusive selectors: SelectorIndex, SelectorReadIndex, and SelectorWriteIndex are mutually exclusive. Assigning any one clears the other two. Do not copy a read-ready or write-ready index into SelectorIndex; setting SelectorReadIndex or SelectorWriteIndex already routes operations to the corresponding ready socket.
Index lifetime: Direct set positions are renumbered whenever a member is removed. After a selected member is closed or another member is pruned, later positions shift down and an old SelectorIndex can identify a different socket or become out of range.
Socket sets overview: See Socket Sets Overview for an explanation of socket sets, selectors, readiness, ownership, and common usage patterns.

More Information and Examples
top
SelectorReadIndex
# $intVal is an integer
$intVal = $socket->get_SelectorReadIndex();
$socket->put_SelectorReadIndex($intVal);

Selects a zero-based position in the read-ready result produced by the most recent call to SelectForReading. If that call returned n, valid values are 0 through n - 1. After assigning this property, call AcceptNext, a receive method, or another ordinary connection operation on this socket-set object; the operation is routed directly to that ready socket.

Reading this property returns exactly the ready-set position last assigned. It does not return or translate to the socket's direct position in the contained set, and no such translation is required.

Mutually exclusive selectors: Assigning SelectorReadIndex clears SelectorIndex and SelectorWriteIndex. Do not set SelectorIndex afterward, because doing so discards the read selection and interprets the number as a direct set position.
Ready-set lifetime: The ready-set and its ordering remain stable for the current select result, but the order is arbitrary and need not match insertion order. The next call to SelectForReading or SelectForWriting invalidates prior ready indices.
Socket sets overview: See Socket Sets Overview for an explanation of socket sets, selectors, readiness, ownership, and common usage patterns.

More Information and Examples
top
SelectorWriteIndex
# $intVal is an integer
$intVal = $socket->get_SelectorWriteIndex();
$socket->put_SelectorWriteIndex($intVal);

Selects a zero-based position in the write-ready result produced by the most recent call to SelectForWriting. If that call returned n, valid values are 0 through n - 1. After assigning this property, ordinary connection operations on this socket-set object are routed directly to that ready socket.

Reading this property returns exactly the ready-set position last assigned. It does not return or translate to the socket's direct position in the contained set.

Mutually exclusive selectors: Assigning SelectorWriteIndex clears SelectorIndex and SelectorReadIndex. Do not set SelectorIndex afterward.
Ready-set lifetime: The ready-set and its ordering remain stable for the current select result, but the order is arbitrary and need not match insertion order. The next select call invalidates prior ready indices.
Socket sets overview: See Socket Sets Overview for an explanation of socket sets, selectors, readiness, ownership, and common usage patterns.

top
SendBytesPerSec
# $intVal is an integer
$intVal = $socket->get_SendBytesPerSec();
Introduced in version 9.5.0.78

Returns the average raw send rate, in bytes per second, since send performance measurement began or was last reset. The measurement includes TLS or SSH framing overhead. Call ResetPerf with 0 to restart send measurement.

top
SendFailReason
# $intVal is an integer
$intVal = $socket->get_SendFailReason();
Introduced in version 9.5.0.49

Contains the numeric result for the most recent send-side operation. The initial value is 0. It is reset to 0 when a send begins, remains 0 on success, and is set to a reason code on failure.

May describe an older send: Connect, accept, receive, and ordinary property operations do not clear this property. Read it immediately after the send operation whose result is being examined.
CodeMeaning
0Success.
1An asynchronous send operation is already in progress.
2The socket is not connected.
3Internal failure, such as an allocation failure.
4Invalid parameters were supplied.
5The socket made no send progress for longer than MaxSendIdleMs.
6The operation was aborted by the application.
7The peer reset the connection.
8The host operating system aborted the established connection.
9An unspecified fatal socket error occurred.
10The peer closed the connection.
11Text or encoded input could not be converted or decoded, such as an invalid StringCharset conversion or malformed encoded data.
A failed send may be partial: Failure does not prove that zero bytes were sent. Chilkat does not retain the unsent remainder and does not report how much was transmitted. After a failed send, a framed protocol should normally discard the connection because the peer may have received a truncated message.
Connection state after failure: A timeout or application abort generally leaves the TCP connection open, even though the protocol stream may no longer be safe to reuse. A peer close or reset leaves the connection unavailable for further I/O.

top
SendPacketSize
# $intVal is an integer
$intVal = $socket->get_SendPacketSize();
$socket->put_SendPacketSize($intVal);

Specifies the internal chunk size used when sending a large amount of data over a plain TCP connection. The default is 65535 bytes. TLS connections use TLS record handling rather than this setting.

Note: This value does not preserve message boundaries and does not determine IP packet sizes. TCP remains a continuous byte stream.

top
SessionLog
# $strVal is a string
# $ckStr is a CkString
$socket->get_SessionLog($ckStr);
$strVal = $socket->sessionLog();

Returns the accumulated send/receive session log for this wrapper when KeepSessionLog is 1. Use SessionLogEncoding to choose an escaped or hexadecimal representation and ClearSessionLog to reset it.

Important: The log can contain sensitive plaintext even when the network connection uses TLS. Treat it as diagnostic data and protect it accordingly.

More Information and Examples
top
SessionLogEncoding
# $strVal is a string
# $ckStr is a CkString
$socket->get_SessionLogEncoding($ckStr);
$strVal = $socket->sessionLogEncoding();
$socket->put_SessionLogEncoding($strVal);

Controls how bytes are rendered in SessionLog. The default is esc.

ValueFormat
escCompact C-style escaped text. Printable ASCII remains readable; control and nonprintable bytes are escaped, such as \r, \n, and \xHH.
hexEvery byte is represented in hexadecimal, which is larger but unambiguous for binary protocols.

More Information and Examples
top
SniHostname
# $strVal is a string
# $ckStr is a CkString
$socket->get_SniHostname($ckStr);
$strVal = $socket->sniHostname();
$socket->put_SniHostname($strVal);
Introduced in version 9.5.0.82

Sets the Server Name Indication (SNI) hostname sent in the TLS ClientHello. By default, Chilkat uses the hostname passed to Connect. Set this property when connecting to a numeric IP address or alternate network endpoint while the TLS server expects a particular virtual-host name.

Scope: This property changes only the SNI name in the TLS handshake. It does not change the DNS lookup, TCP destination, or any hostname carried by the application protocol.

top
SocksHostname
# $strVal is a string
# $ckStr is a CkString
$socket->get_SocksHostname($ckStr);
$strVal = $socket->socksHostname();
$socket->put_SocksHostname($strVal);

Specifies the hostname or numeric IP address of the SOCKS proxy. It is used only when SocksVersion is 4 or 5.

top
SocksPassword
# $strVal is a string
# $ckStr is a CkString
$socket->get_SocksPassword($ckStr);
$strVal = $socket->socksPassword();
$socket->put_SocksPassword($strVal);

Specifies the password for SOCKS5 username/password authentication. SOCKS4 does not define a password field, so this property is ignored for SOCKS4.

Important: SOCKS5 username/password authentication does not itself encrypt credentials. Security depends on the network path to the proxy.

top
SocksPort
# $intVal is an integer
$intVal = $socket->get_SocksPort();
$socket->put_SocksPort($intVal);

Specifies the TCP port of the SOCKS proxy. The default is 1080. It is used only when SocksVersion is 4 or 5.

top
SocksUsername
# $strVal is a string
# $ckStr is a CkString
$socket->get_SocksUsername($ckStr);
$strVal = $socket->socksUsername();
$socket->put_SocksUsername($strVal);

Specifies the SOCKS proxy username. For SOCKS4 it is the user ID sent in the request; for SOCKS5 it is used when username/password authentication is negotiated.

top
SocksVersion
# $intVal is an integer
$intVal = $socket->get_SocksVersion();
$socket->put_SocksVersion($intVal);

Selects whether connections are routed through a SOCKS proxy.

ValueBehavior
0Do not use a SOCKS proxy. This is the default.
4Connect through a SOCKS4 proxy.
5Connect through a SOCKS5 proxy.

top
SoRcvBuf
# $intVal is an integer
$intVal = $socket->get_SoRcvBuf();
$socket->put_SoRcvBuf($intVal);

Requests the operating-system receive-buffer size for the TCP socket. The default requested value is 4194304 bytes. Most applications should leave it unchanged.

Note: The operating system may round, clamp, or internally scale the requested value. Increasing the buffer does not by itself guarantee higher throughput; measure performance before changing it.

top
SoReuseAddr
# $boolVal is a boolean
$boolVal = $socket->get_SoReuseAddr();
$socket->put_SoReuseAddr($boolVal);

Controls the SO_REUSEADDR option for a socket that will bind and listen. The default is 1. Set it before BindAndListen, BindAndListenPortRange, or InitSslServer.

Important: The exact meaning of SO_REUSEADDR differs across operating systems. It can help restart a listener after a previous connection, but it is not a portable substitute for exclusive-port ownership.

top
SoSndBuf
# $intVal is an integer
$intVal = $socket->get_SoSndBuf();
$socket->put_SoSndBuf($intVal);

Requests the operating-system send-buffer size for the TCP socket. The default requested value is 262144 bytes. Most applications should leave it unchanged.

Note: The operating system may round, clamp, or internally scale the value. Test representative workloads before increasing it.

top
Ssl
# $boolVal is a boolean
$boolVal = $socket->get_Ssl();
$socket->put_Ssl($boolVal);

Controls whether incoming connections accepted by this listener must complete a TLS handshake. The default is 0. Set it to 1 for a TLS server listener.

Important: This is a listener requirement, not a connection-state indicator. Configure the server certificate with InitSslServer before accepting TLS clients. Do not use TlsVersion or TlsCipherSuite alone to determine whether the current connection is protected by TLS, because those properties retain the results of the object's most recent successful TLS handshake even after the connection changes.

top
SslAllowedCiphers
# $strVal is a string
# $ckStr is a CkString
$socket->get_SslAllowedCiphers($ckStr);
$strVal = $socket->sslAllowedCiphers();
$socket->put_SslAllowedCiphers($strVal);
Introduced in version 9.5.0.48

Restricts the cipher suites permitted for TLS connections. This property has the same behavior as Chilkat.Http.SslAllowedCiphers and applies to TLS client connections and TLS server handshakes.

The default empty string allows all cipher suites implemented and enabled by the Chilkat build. To restrict negotiation, provide a comma-separated list of cipher-suite names in preference order, for example:

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

The negotiated suite must be in the intersection supported by both peers. A TLS client supplies its allowed list to the server; the server ultimately chooses from that list.

The following policy keywords are also recognized:

  • rsa1024 — when acting as a client, reject a server certificate whose RSA key is smaller than 1024 bits.
  • rsa2048 — when acting as a client, reject a server certificate whose RSA key is smaller than 2048 bits.
  • secure-renegotiation — require secure renegotiation.
  • best-practices — use Chilkat's current best-practices policy. The exact policy may change in later Chilkat versions.

Legacy filter keywords such as aes256-cbc, aes128-cbc, 3des-cbc, and rc4 remain recognized for compatibility.

Security: Avoid obsolete suites based on RC4, DES, or 3DES. The set of implemented suites and the meaning of best-practices can change with Chilkat versions and platform capabilities.

top
SslProtocol
# $strVal is a string
# $ckStr is a CkString
$socket->get_SslProtocol($ckStr);
$strVal = $socket->sslProtocol();
$socket->put_SslProtocol($strVal);

Selects the SSL/TLS protocol version allowed for secure connections. This property has the same behavior as Chilkat.Http.SslProtocol and applies to TLS client connections and TLS server handshakes.

Accepted values are:

  • default
  • TLS 1.3
  • TLS 1.2
  • TLS 1.1
  • TLS 1.0
  • SSL 3.0
  • TLS 1.3 or higher
  • TLS 1.2 or higher
  • TLS 1.1 or higher
  • TLS 1.0 or higher

The default value is default, which allows the protocol to be selected dynamically according to what the peer and Chilkat support. Choosing an exact version causes the connection to fail unless that exact version is negotiated. A minimum-version form such as TLS 1.2 or higher is generally preferable to an exact version.

Security: Avoid SSL 3.0, TLS 1.0, and TLS 1.1 unless compatibility with a legacy peer is unavoidable.

More Information and Examples
top
StringCharset
# $strVal is a string
# $ckStr is a CkString
$socket->get_StringCharset($ckStr);
$strVal = $socket->stringCharset();
$socket->put_StringCharset($strVal);

Specifies the character encoding used by text-oriented socket methods. Examples include utf-8, windows-1252, shift_jis, and iso-8859-1. The default is ansi.

The value ansi means the system default encoding determined by the default system locale. It is not a fixed encoding such as Windows-1252, ISO-8859-1, or ASCII; the actual encoding is platform- and system-configuration-dependent.

Sending methods such as SendString and SendSb encode text using this charset. String receive methods decode incoming bytes from this charset, including ReceiveString, ReceiveSb, ReceiveToCRLF, and delimiter-based string methods.

Important: TCP transports bytes, not text. Both peers must agree on the encoding and message framing. For portable protocols, prefer an explicit charset such as utf-8 rather than ansi. Use byte-oriented methods when the protocol is binary or exact byte preservation is required.

top
TcpNoDelay
# $boolVal is a boolean
$boolVal = $socket->get_TcpNoDelay();
$socket->put_TcpNoDelay($boolVal);

Controls the TCP_NODELAY option. The default is 0, allowing the Nagle algorithm. Set it to 1 to send small writes with lower latency rather than waiting to coalesce them.

Note: Disabling Nagle can improve interactive request/response latency but may increase packet overhead. It is not universally faster for bulk transfers.

top
TlsCipherSuite
# $strVal is a string
# $ckStr is a CkString
$socket->get_TlsCipherSuite($ckStr);
$strVal = $socket->tlsCipherSuite();
Introduced in version 9.5.0.49

Returns the cipher suite from the most recent successful TLS handshake performed by this Socket object, for example TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384. It is empty until the object has completed its first successful TLS handshake.

Cached handshake result: This property does not necessarily describe the current connection. Its value is retained after Close, a failed connection attempt, a later plain-TCP connection, and ConvertFromSsl. It is replaced only when this object completes another successful TLS handshake. Do not use this property alone to determine whether the current connection is protected by TLS.

top
TlsPinSet
# $strVal is a string
# $ckStr is a CkString
$socket->get_TlsPinSet($ckStr);
$strVal = $socket->tlsPinSet();
$socket->put_TlsPinSet($strVal);
Introduced in version 9.5.0.55

Specifies one or more expected SubjectPublicKeyInfo (SPKI) fingerprints for TLS public-key pinning. If the certificate presented by the server does not match any configured fingerprint, the TLS handshake is aborted and the connection fails.

The format is:

hash_algorithm, encoding, fingerprint1, fingerprint2, ...

For example, a single SHA-256 base64 pin is:

sha256, base64, lKg1SIqyhPSK19tlPbjl8s02yChsVTDklQpkMCHvsTE=

Supported hash algorithms include sha1, sha256, sha384, sha512, md2, md5, haval, ripemd128, ripemd160, ripemd256, and ripemd320. Supported encodings include base64, hex, and other Chilkat-supported binary encodings.

Independent enforcement: Pin matching is enforced whenever this property is nonempty, even if RequireSslCertVerify is 0. Normal certificate validity and trust-chain verification remain separately controlled by RequireSslCertVerify.
Key rotation: Pinning is operationally strict. Add backup pins before rotating the server key, or a legitimate certificate replacement can break connectivity.

More Information and Examples
top
TlsVersion
# $strVal is a string
# $ckStr is a CkString
$socket->get_TlsVersion($ckStr);
$strVal = $socket->tlsVersion();
Introduced in version 9.5.0.49

Returns the protocol version from the most recent successful TLS handshake performed by this Socket object, such as TLS 1.2 or TLS 1.3. It is empty until the object has completed its first successful TLS handshake.

Cached handshake result: This property does not necessarily describe the current connection. Its value is retained after Close, a failed connection attempt, a later plain-TCP connection, and ConvertFromSsl. It is replaced only when this object completes another successful TLS handshake. Do not use this property alone to determine whether the current connection is protected by TLS.

top
UncommonOptions
# $strVal is a string
# $ckStr is a CkString
$socket->get_UncommonOptions($ckStr);
$strVal = $socket->uncommonOptions();
$socket->put_UncommonOptions($strVal);
Introduced in version 9.5.0.80

Provides comma-separated compatibility or platform-specific options. The default is the empty string and should normally remain unchanged.

KeywordBehavior
ProtectFromVpnOn Android, attempts to route the socket outside an active VPN.
EnableTls13Historical compatibility option introduced when TLS 1.3 was not yet enabled by default. It is generally unnecessary in current versions.
Important: These options are intentionally uncommon and may be platform- or version-specific. Use only when the documented behavior is required.

More Information and Examples
top
UserData
# $strVal is a string
# $ckStr is a CkString
$socket->get_UserData($ckStr);
$strVal = $socket->userData();
$socket->put_UserData($strVal);

Stores arbitrary application text with the socket object. Chilkat does not transmit, interpret, or otherwise use this value. It is useful for associating a label, connection ID, or other application metadata with a socket.

top
Utf8
# $boolVal is a boolean
$boolVal = $socket->get_Utf8();
$socket->put_Utf8($boolVal);

When set to 1, all string arguments and return values are interpreted as UTF-8 strings. When set to 0, they are interpreted as ANSI strings.

In Chilkat v11.0.0 and later, the default value is 1. Before v11.0.0, it was 0.

top
VerboseLogging
# $boolVal is a boolean
$boolVal = $socket->get_VerboseLogging();
$socket->put_VerboseLogging($boolVal);

If set to 1, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. The default value is 0. Verbose logging should only be used for debugging. The potentially large quantity of logged information may adversely affect peformance.

top
Version
# $strVal is a string
# $ckStr is a CkString
$socket->get_Version($ckStr);
$strVal = $socket->version();

Version of the component/library, such as "10.1.0"

More Information and Examples
top

Methods

AcceptNext
# $maxWaitMs is an integer
# $socket is a CkSocket
$status = $socket->AcceptNext($maxWaitMs, $socket);
Introduced in version 11.0.0

Waits for and accepts the next incoming connection on a socket previously configured by BindAndListen or BindAndListenPortRange. For a TLS listener, acceptance includes the server-side TLS handshake.

  • maxWaitMs = 0 waits indefinitely for an incoming connection.
  • A positive value waits up to that many milliseconds.
  • Negative values have no defined meaning and should not be used.
Destination replacement: On success, the accepted connection replaces any connection already owned by socket; a prior call to Close is not required. The destination keeps its existing property values, while only its connection is replaced. If the destination is actively performing another operation, the accept fails rather than interrupting that operation.
Failure is non-destructive: On any failure, including a timeout, missing listener, or TLS handshake failure, the destination socket is left completely unchanged. The listening socket also remains active after a timeout or a per-client TLS failure, so the application may immediately call AcceptNext again without rebinding.

The accepted connection is independent of the listener and all other accepted connections. Listener properties are not copied to the accepted socket. Configure the destination before or after a successful accept as needed.

SettingInherited from listener?
MaxReadIdleMs / MaxSendIdleMsNo
Verbose logging and debug-log pathNo
Upload/download bandwidth throttlingNo
Socket buffers and TCP no-delay optionsNo
SslAllowedCiphers / SslProtocolNo
TLS state: The server certificate configuration created by InitSslServer remains on the listener and is used for each handshake. The accepted socket contains that connection's negotiated TLS state, peer information, and any received client certificate. Examine those values on the accepted socket.
TLS handshake timeout: maxWaitMs governs the wait for the incoming TCP connection. Handshake inactivity is governed by MaxReadIdleMs and MaxSendIdleMs on the listener.

Returns 1 for success, 0 for failure.

top
AcceptNextAsync (1)
# returns a CkTask
# $maxWaitMs is an integer
# $socket is a CkSocket
$ret_task = $socket->AcceptNextAsync($maxWaitMs, $socket);
Introduced in version 11.0.0

Creates an asynchronous task to call the AcceptNext method with the arguments provided.

Returns null on failure

top
AddSslAcceptableClientCaDn
# $certAuthDN is a string
$status = $socket->AddSslAcceptableClientCaDn($certAuthDN);

Adds a certificate-authority distinguished name to the list advertised by a TLS server when requesting a client certificate for mutual TLS. Call this method once for each acceptable CA distinguished name.

Required order: Call every AddSslAcceptableClientCaDn before InitSslServer. The acceptable-CA list is captured when InitSslServer creates the TLS server configuration. Names added afterward are not included in that configuration's CertificateRequest and therefore do not affect its handshakes.

Skip this method when the server does not request client certificates. If no CA distinguished names are added, client certificates issued by any root CA are accepted by this CA-name filter.

Authorization remains application-defined: The CA-name list is only one part of mutual TLS. After AcceptNext succeeds, inspect the client certificates on the accepted socket and apply the application's authorization policy.

Returns 1 for success, 0 for failure.

top
BindAndListen
# $port is an integer
# $backLog is an integer
$status = $socket->BindAndListen($port, $backLog);

Binds a TCP listener to port and places it into listening mode. After this method succeeds, call AcceptNext to accept incoming connections.

When ClientIpAddress is empty, the listener binds to all interfaces: 0.0.0.0 when the shared ListenIpv6/PreferIpv6 setting is 0, or :: when it is 1. To restrict the listener to one local interface, set ClientIpAddress to that interface's numeric address before calling this method. The explicit address also determines whether the listener is IPv4 or IPv6.

backLog is the requested operating-system queue length for connections that have completed or are completing the TCP handshake but have not yet been accepted. It is a queue hint, not a limit on the total number of clients the application can serve.

Pass 0 for port to let the operating system choose an available port, then read ListenPort.

Remote access by default: Because an empty ClientIpAddress binds to all interfaces, remote computers can connect by default, subject to routing and firewall rules. Set ClientIpAddress to 127.0.0.1 or ::1 for a loopback-only listener.
State replacement: If this object currently has an outbound connection, that connection is discarded and the object becomes a listener. A prior call to Close is not required. If another operation is actively using the socket, this call fails with an in-use error.
TLS server call order: When client-certificate CA names are needed, call AddSslAcceptableClientCaDn first. Then call InitSslServer, BindAndListen, and AcceptNext, in that order. Calling InitSslServer after binding discards the listener and leaves the object unbound.
Backlog: The operating system may cap or adjust the requested backlog. Choose a value based on burst arrival rate and how quickly the application returns to accepting connections.

Returns 1 for success, 0 for failure.

top
BindAndListenAsync (1)
# returns a CkTask
# $port is an integer
# $backLog is an integer
$ret_task = $socket->BindAndListenAsync($port, $backLog);

Creates an asynchronous task to call the BindAndListen method with the arguments provided.

Returns null on failure

top
BindAndListenPortRange
# $beginPort is an integer
# $endPort is an integer
# $backLog is an integer
$retInt = $socket->BindAndListenPortRange($beginPort, $endPort, $backLog);
Introduced in version 9.5.0.69

Searches the inclusive range beginPort through endPort for an available TCP port, binds it, and begins listening. The method returns the selected port, or -1 when no port can be bound or another error occurs.

When ClientIpAddress is empty, the listener binds to all interfaces: 0.0.0.0 when the shared ListenIpv6/PreferIpv6 setting is 0, or :: when it is 1. Set ClientIpAddress to a numeric local address to bind only to that interface; the explicit address determines the address family.

backLog is the requested operating-system pending-connection queue length. The operating system may cap or adjust it.

Next step: After a port is successfully selected, call AcceptNext to accept incoming connections. For TLS listeners, complete AddSslAcceptableClientCaDn, if needed, and InitSslServer before calling this method.
top
BindAndListenPortRangeAsync (1)
# returns a CkTask
# $beginPort is an integer
# $endPort is an integer
# $backLog is an integer
$ret_task = $socket->BindAndListenPortRangeAsync($beginPort, $endPort, $backLog);
Introduced in version 9.5.0.69

Creates an asynchronous task to call the BindAndListenPortRange method with the arguments provided.

Returns null on failure

top
BuildHttpGetRequest
# $url is a string
# $outStr is a CkString (output)
$status = $socket->BuildHttpGetRequest($url, $outStr);
$retStr = $socket->buildHttpGetRequest($url);
Introduced in version 9.5.0.35

Builds and returns a simple HTTP GET request for url. The method only constructs the request text; it does not connect, send the request, follow redirects, or read a response.

Tip: Use the higher-level Http or Rest class for normal HTTP work. This helper is intended for low-level socket examples or custom HTTP handling.

Returns 1 for success, 0 for failure.

More Information and Examples
top
CheckWriteable
# $maxWaitMs is an integer
$retInt = $socket->CheckWriteable($maxWaitMs);

Waits for the connected socket to become writable.

  • maxWaitMs = 0 performs a nonblocking poll and returns immediately.
  • A positive value waits up to that many milliseconds.
  • Negative values have no defined meaning and should not be used.
Return valueMeaning
1The socket is connected and currently writable.
0The socket was not writable before the timeout, or the operation was aborted.
-1The socket is not connected or an error occurred.
Write readiness: Writable means the operating system can presently accept more bytes into its send buffer. It does not mean the remote application has received or processed them.
More Information and Examples
top
CheckWriteableAsync (1)
# returns a CkTask
# $maxWaitMs is an integer
$ret_task = $socket->CheckWriteableAsync($maxWaitMs);

Creates an asynchronous task to call the CheckWriteable method with the arguments provided.

Returns null on failure

top
ClearSessionLog
$socket->ClearSessionLog();

Clears the accumulated text returned by SessionLog for this wrapper. It does not change KeepSessionLog or close the connection.

top
Close
# $maxWaitMs is an integer
$status = $socket->Close($maxWaitMs);

Attempts to gracefully terminate and close the current TCP, TLS, or SSH channel connection. maxWaitMs controls how long the method waits for clean shutdown processing.

  • 0 waits indefinitely for the clean close.
  • A positive value waits up to that many milliseconds.
  • Negative values have no defined meaning and should not be used.

The method is safe and idempotent. Calling it on an already closed or never-connected object does nothing and returns 1. Repeated calls are harmless; the diagnostic log may note that there was no connection to close.

Socket-set removal: When a socket-set selector is active, Close is routed to the selected member, closes it, and removes it from the set immediately. There is no separate remove-without-closing method. Direct SelectorIndex positions after the removed member shift down.
Duplicated connections: When the connection is shared by objects created through DupSocket, calling Close on any wrapper closes the connection for all wrappers. Merely destroying one duplicate without calling Close releases only that wrapper's reference.
Note: After this call, IsConnected is 0 for the closed connection. A graceful transport close cannot guarantee that the remote application processed all data sent before the close.

Returns 1 for success, 0 for failure.

More Information and Examples
top
CloseAsync (1)
# returns a CkTask
# $maxWaitMs is an integer
$ret_task = $socket->CloseAsync($maxWaitMs);

Creates an asynchronous task to call the Close method with the arguments provided.

Returns null on failure

top
Connect
# $hostname is a string
# $port is an integer
# $ssl is a boolean
# $maxWaitMs is an integer
$status = $socket->Connect($hostname, $port, $ssl, $maxWaitMs);

Establishes a TCP connection to hostname:port. Set ssl to 1 to perform a TLS handshake after the TCP connection succeeds; set it to 0 for plain TCP. hostname may be a DNS name or a numeric IPv4 or IPv6 address.

maxWaitMs is the overall wait budget for DNS resolution performed by this call and establishment of the TCP connection. Its special values are:

  • 0 waits indefinitely, subject to an internal effective ceiling of approximately six hours.
  • A positive value below 100 milliseconds is treated as 100 milliseconds.
  • Negative values have no defined meaning and should not be used.

The later TLS handshake is governed by MaxReadIdleMs and MaxSendIdleMs, not by maxWaitMs. HTTP and SOCKS proxy protocol exchanges ordinarily use those read/write idle timeouts as well; there is no separate proxy-negotiation timeout property.

Connection options such as ClientIpAddress, ClientPort, proxy settings, PreferIpv6, TLS policy, SNI, ALPN, certificate verification, pinning, and client certificates must be configured before calling this method.

Connection phaseTimeout
DNS resolution performed by ConnectmaxWaitMs overall budget
TCP connection establishmentmaxWaitMs
TLS handshakeMaxReadIdleMs and MaxSendIdleMs
HTTP/SOCKS proxy exchangesOrdinarily the read/write idle timeouts; no separate setting is provided
Reusing the object: A prior call to Close is not required. If this object is already connected, listening, or contains leftover state from a failed connection or TLS upgrade, Connect discards that state and establishes the new connection. An existing TCP or TLS connection is torn down immediately rather than closed gracefully, and an existing listener is stopped. If another operation is actively using the socket, the call fails with an in-use error instead of interrupting that operation.
SSH tunnel exception: When this object has a live SSH tunnel, the SSH session is preserved. The previous tunneled channel is closed, and the new destination connection is opened through the same SSH tunnel.
Socket sets: If SelectorIndex, SelectorReadIndex, or SelectorWriteIndex selects a member, this method is routed to that selected member. With no active selector, it creates or replaces the set container object's own direct connection and leaves the contained members unchanged.
Security: A successful TCP connection only establishes a byte stream. For TLS, enable the certificate-verification and/or pinning policy required by the application. A completed connection does not by itself authenticate an application-level protocol.
Idle connections: A connected socket does not automatically close merely because no application data is sent. Peers, NAT devices, proxies, firewalls, and operating-system TCP keepalive policies can still close an idle path.

Returns 1 for success, 0 for failure.

top
ConnectAsync (1)
# returns a CkTask
# $hostname is a string
# $port is an integer
# $ssl is a boolean
# $maxWaitMs is an integer
$ret_task = $socket->ConnectAsync($hostname, $port, $ssl, $maxWaitMs);

Creates an asynchronous task to call the Connect method with the arguments provided.

Returns null on failure

top
ConvertFromSsl
$status = $socket->ConvertFromSsl();

Ends the TLS layer while leaving the underlying TCP connection open for subsequent unencrypted communication. This is the reverse of a STARTTLS-style upgrade and is valid only when TLS is currently active.

If called on a connected plain TCP socket, the method returns 0 because there is no TLS layer to remove. The plain connection remains unchanged.

Important: The peer and application protocol must explicitly support returning to plaintext. Arbitrarily removing TLS from a normal secure protocol will usually break the session and can expose data.

Returns 1 for success, 0 for failure.

More Information and Examples
top
ConvertFromSslAsync (1)
# returns a CkTask
$ret_task = $socket->ConvertFromSslAsync();

Creates an asynchronous task to call the ConvertFromSsl method with the arguments provided.

Returns null on failure

top
ConvertToSsl
$status = $socket->ConvertToSsl();

Upgrades an already connected plain TCP socket to TLS by performing a client-side TLS handshake over the existing connection.

Important: Use this only at the point where the application protocol permits a STARTTLS-style upgrade. Configure TLS policy, SNI, certificate verification, pinning, and any client certificate before calling it.
Already-TLS connections: Calling ConvertToSsl on a connection that is already protected by TLS is unsupported. The method checks that a connection exists but does not define a second TLS-upgrade operation. Call it only for an established plain connection.

Returns 1 for success, 0 for failure.

top
ConvertToSslAsync (1)
# returns a CkTask
$ret_task = $socket->ConvertToSslAsync();

Creates an asynchronous task to call the ConvertToSsl method with the arguments provided.

Returns null on failure

top
DnsCacheClear
$socket->DnsCacheClear();
Introduced in version 9.5.0.38

Clears Chilkat's process-wide in-memory DNS cache. Subsequent hostname resolutions perform a new lookup as needed.

Important: The cache is shared by Chilkat objects in the process, so clearing it can affect unrelated connections. Normally the cache should be left intact because Chilkat observes DNS record TTL expiration.
More Information and Examples
top
DnsLookup
# $hostname is a string
# $maxWaitMs is an integer
# $outStr is a CkString (output)
$status = $socket->DnsLookup($hostname, $maxWaitMs, $outStr);
$retStr = $socket->dnsLookup($hostname, $maxWaitMs);

Resolves hostname and returns one numeric IP address.

  • maxWaitMs = 0 waits indefinitely.
  • A positive value waits up to that many milliseconds.
  • Negative values have no defined meaning and should not be used.
Multiple addresses: A hostname can resolve to multiple IPv4 and IPv6 addresses. This method returns one selected address, influenced by settings such as PreferIpv6; it is not a complete DNS-record enumeration.

Returns 1 for success, 0 for failure.

More Information and Examples
top
DnsLookupAsync (1)
# returns a CkTask
# $hostname is a string
# $maxWaitMs is an integer
$ret_task = $socket->DnsLookupAsync($hostname, $maxWaitMs);

Creates an asynchronous task to call the DnsLookup method with the arguments provided.

Returns null on failure

top
DupSocket
# $dest is a CkSocket
$status = $socket->DupSocket($dest);
Introduced in version 11.0.0

Populates dest with another Socket wrapper that shares this object's underlying connection. The destination first releases its reference to any connection it previously held. The shared connection object is reference-counted, but all wrappers operate on the same live connection and byte stream.

The reference count keeps the underlying connection object alive while wrappers still refer to it; it does not prevent an explicit Close from shutting down the connection. TLS state, TLS conversion state, and the internal receive/over-read buffer are shared. A TLS renegotiation, ConvertToSsl, or ConvertFromSsl through one wrapper changes the connection seen by every duplicate. Bytes buffered through one wrapper may be consumed by a receive through another.

State, setting, or resultScope after DupSocket
Underlying connection, byte stream, TLS session, TLS conversion state, and receive bufferShared by all duplicates.
ReceivedCountShared connection-level counter. All duplicates report the same cumulative value, and resetting it through one wrapper resets the value seen by the others.
SendBytesPerSec and RcvBytesPerSecShared connection-level measurements. Calling ResetPerf through one wrapper resets the selected measurement for every duplicate.
KeepSessionLog, SessionLog, and session loggingPer wrapper. Enabling logging on one duplicate does not enable it on another. Each wrapper logs only traffic that passes through it, and reading or clearing one wrapper's log does not affect another wrapper's log.
LastMethodFailed, AcceptFailReason, ReceiveFailReason, SendFailReason, and ReceivedIntPer wrapper. An operation performed through one duplicate does not update these values on another duplicate.
Close affects every duplicate: Calling Close on any wrapper actively closes the shared connection for all wrappers. The other wrapper objects remain alive, but subsequent I/O through them fails because the shared connection is closed.
Threading pattern: Duplicates are intended to permit one reader and one writer to use the same connection. Two concurrent readers compete for the same stream and shared receive buffer and should be avoided.
Release rule: When one duplicate is no longer needed but another must continue using the connection, release, destroy, delete, or allow the unused wrapper to be garbage-collected without calling Close. This drops only that wrapper's reference and leaves the connection usable through the remaining duplicates. Call Close on any one wrapper only when the shared connection should end for everyone.

Returns 1 for success, 0 for failure.

top
GetAdaptersAddresses
# $json is a CkJsonObject
$status = $socket->GetAdaptersAddresses($json);
Introduced in version 10.1.3

Populates json with information about local network adapters, including IPv4 addresses, IPv6 addresses, and MAC addresses. Existing contents of the destination JSON object are replaced or populated according to the returned structure.

Note: Adapter data is local system configuration. It does not identify the public Internet address seen through NAT.

Returns 1 for success, 0 for failure.

top
GetLastJsonData
# $json is a CkJsonObject
$socket->GetLastJsonData($json);
Introduced in version 11.0.0

Copies additional JSON details from the most recently called method into json, when that method produced such information. Many methods produce an empty result.

Important: Call this immediately after the operation of interest. Any intervening method call can replace the stored details.
top
GetMyServerCert
# $cert is a CkCert
$status = $socket->GetMyServerCert($cert);
Introduced in version 11.0.0

Copies the TLS server certificate configured by InitSslServer into cert. This method is intended for a socket acting as a TLS server and returns 0 when no server certificate has been configured.

Returns 1 for success, 0 for failure.

More Information and Examples
top
GetRcvdClientCert
# $index is an integer
# $cert is a CkCert
$status = $socket->GetRcvdClientCert($index, $cert);
Introduced in version 11.0.0

Copies the client certificate at zero-based index into cert from the TLS handshake of an accepted server-side connection. Use NumReceivedClientCerts to determine the valid index range.

Client certificates are normally supplied only when the server requests mutual TLS authentication. The application can inspect the returned certificate and close the connection when it does not satisfy authorization requirements.

Important: Call this method on the accepted connection object populated by AcceptNext, not on the listener socket.

Returns 1 for success, 0 for failure.

top
GetServerCert
# $cert is a CkCert
$status = $socket->GetServerCert($cert);
Introduced in version 11.0.0

Copies the certificate presented by the remote TLS server into cert for the current client-side TLS connection. The method returns 0 when the socket is not connected, is not using TLS, or no server certificate is available.

Note: Retrieving the certificate does not itself establish trust. Use RequireSslCertVerify and/or TlsPinSet when validation is required.

Returns 1 for success, 0 for failure.

top
GetSslAcceptableClientCaDn
# $index is an integer
# $outStr is a CkString (output)
$status = $socket->GetSslAcceptableClientCaDn($index, $outStr);
$retStr = $socket->getSslAcceptableClientCaDn($index);

Returns the certificate-authority distinguished name at zero-based index from the list sent by a TLS server when it requests a client certificate. Valid indexes range from 0 through NumSslAcceptableClientCAs - 1.

Returns 1 for success, 0 for failure.

top
InitSslServer
# $cert is a CkCert
$status = $socket->InitSslServer($cert);

Configures this object for server-side TLS using cert as the server certificate. The certificate must have access to its corresponding private key.

For a TLS listener that requests client certificates, the required sequence is:

AddSslAcceptableClientCaDn   (once for each acceptable CA)
InitSslServer
BindAndListen
AcceptNext

For a TLS listener without client-certificate requests, omit AddSslAcceptableClientCaDn. For a plain non-TLS listener, omit both TLS setup steps.

When the object is not already connected, this method also sets Ssl to 1. It may also be used on an already connected socket to begin server-side TLS on that live connection.

Call order: Do not call InitSslServer after BindAndListen. A listening socket is not treated as a connected socket, so this method replaces it with a new, unbound TLS-server socket and the existing bind is lost. All calls to AddSslAcceptableClientCaDn must also occur before this method.
Listener versus accepted socket: The server certificate configuration remains on the listener and is used for each accepted TLS handshake. Per-connection negotiated TLS information and received client certificates are stored on the accepted socket.

Returns 1 for success, 0 for failure.

top
LoadTaskCaller
# $task is a CkTask
$status = $socket->LoadTaskCaller($task);
Introduced in version 9.5.0.80

Loads this object with the state of the object that initiated the asynchronous operation represented by task. This is useful when the task has completed on a worker thread and the caller state must be recovered into another wrapper object.

Important: Use a task created by a compatible Socket asynchronous method and call this after completion.

Returns 1 for success, 0 for failure.

top
LoadTaskResult
# $task is a CkTask
$status = $socket->LoadTaskResult($task);
Introduced in version 9.5.0.52

Loads this socket object with the result state produced by a completed asynchronous task whose result is a socket. Call it only after the task has completed successfully.

Important: The task and result type must correspond to a compatible socket operation. Check the task result and LastErrorText when loading fails.

Returns 1 for success, 0 for failure.

top
PollDataAvailable
$retBool = $socket->PollDataAvailable();

Performs a nonblocking check for readable activity on the socket. It returns 1 when data or another read-ready condition is present and 0 when nothing is immediately available.

Note: A socket can become read-ready because the peer closed or reset the connection. The next receive operation determines whether bytes are available or the connection ended.
More Information and Examples
top
PollDataAvailableAsync (1)
# returns a CkTask
$ret_task = $socket->PollDataAvailableAsync();

Creates an asynchronous task to call the PollDataAvailable method with the arguments provided.

Returns null on failure

top
ReceiveBd
# $binData is a CkBinData
$status = $socket->ReceiveBd($binData);
Introduced in version 9.5.0.65

Receives one delivery of binary data and appends it to binData. Chilkat first appends any data already buffered internally. If no buffered data exists, the method performs one receive operation; it does not loop to drain everything that may be available.

  • For plain TCP, a direct read obtains at most ReceivePacketSize bytes.
  • For TLS or SSH, the amount is governed by the TLS record or SSH packet and is not limited by ReceivePacketSize.
  • Already-buffered data is appended in full, even if it exceeds ReceivePacketSize.
  • A successful call can append zero bytes during TLS renegotiation. Treat this as no application data yet and call the receive method again.
Inspect the destination even on failure: An orderly peer close reports ReceiveFailReason = 10, but binData may contain final bytes received immediately before the close.
TCP framing: TCP does not preserve message boundaries. Define framing in the application protocol, such as an exact length, delimiter, fixed-size record, or connection close.

Returns 1 for success, 0 for failure.

More Information and Examples
top
ReceiveBdAsync (1)
# returns a CkTask
# $binData is a CkBinData
$ret_task = $socket->ReceiveBdAsync($binData);
Introduced in version 9.5.0.65

Creates an asynchronous task to call the ReceiveBd method with the arguments provided.

Returns null on failure

top
ReceiveBdN
# $numBytes is an integer
# $binData is a CkBinData
$status = $socket->ReceiveBdN($numBytes, $binData);
Introduced in version 9.5.0.65

Receives exactly numBytes bytes and appends them to binData. The method continues receiving until the requested count is satisfied or a receive failure occurs. Inactivity is controlled by MaxReadIdleMs.

The destination changes on failure: If a timeout, application abort, connection close, or reset occurs after only part of the requested data is received, the method returns false, but the partial bytes remain appended to binData. Those bytes have been consumed from the connection, are included in ReceivedCount, and are not retained internally for a later receive call.

A timeout or application abort generally leaves the connection open. A peer close or reset leaves it unavailable for further I/O. When the requested count is successfully completed, bytes read beyond that count may remain buffered internally for the next receive operation.

Returns 1 for success, 0 for failure.

top
ReceiveBdNAsync (1)
# returns a CkTask
# $numBytes is an integer
# $binData is a CkBinData
$ret_task = $socket->ReceiveBdNAsync($numBytes, $binData);
Introduced in version 9.5.0.65

Creates an asynchronous task to call the ReceiveBdN method with the arguments provided.

Returns null on failure

top
ReceiveByte
# $bUnsigned is a boolean
$status = $socket->ReceiveByte($bUnsigned);
Introduced in version 9.5.0.50

Reads exactly one byte from the connection and stores its numeric value in ReceivedInt. If bUnsigned is 1, the result is in the range 0 through 255; otherwise it is interpreted as a signed two's-complement byte in the range -128 through 127.

The method waits according to MaxReadIdleMs and returns 0 on timeout, closure, or another receive failure. On failure, ReceivedInt is not cleared or changed; it retains the value from the last successful integer receive.

Check the return value: Use this method's Boolean result to determine whether ReceivedInt contains a newly received byte.

Returns 1 for success, 0 for failure.

top
ReceiveByteAsync (1)
# returns a CkTask
# $bUnsigned is a boolean
$ret_task = $socket->ReceiveByteAsync($bUnsigned);
Introduced in version 9.5.0.50

Creates an asynchronous task to call the ReceiveByte method with the arguments provided.

Returns null on failure

top
ReceiveBytesENC
# $encodingAlg is a string
# $outStr is a CkString (output)
$status = $socket->ReceiveBytesENC($encodingAlg, $outStr);
$retStr = $socket->receiveBytesENC($encodingAlg);

Receives binary data and returns one delivery encoded as text using encodingAlg. Chilkat first returns any data already buffered internally. If no buffered data exists, the method performs one receive operation; it does not loop to drain everything that may be available.

  • For plain TCP, a direct read returns at most ReceivePacketSize bytes.
  • For TLS or SSH, the returned amount is governed by the TLS record or SSH packet rather than ReceivePacketSize.
  • Already-buffered data is returned in full, even if it exceeds ReceivePacketSize.
  • A successful call can receive zero bytes during TLS renegotiation, producing an empty encoded result. Treat this as no application data yet and call the receive method again.

Common encoding names include base64, modBase64, base32, uu, qp, url, hex, q, b, url_oauth, url_rfc1738, url_rfc2396, and url_rfc3986. See all supported Chilkat binary encodings.

Inspect the result even on failure: An orderly peer close reports ReceiveFailReason = 10, but the returned encoded string may contain final bytes received immediately before the close. Process those bytes before finishing the receive loop.
Encoding: The encoding affects only the textual representation returned by this method. It does not change the bytes received from the network.
TCP framing: TCP does not preserve message boundaries. Define framing in the application protocol, such as an exact length, delimiter, fixed-size record, or connection close.

Returns 1 for success, 0 for failure.

More Information and Examples
top
ReceiveBytesENCAsync (1)
# returns a CkTask
# $encodingAlg is a string
$ret_task = $socket->ReceiveBytesENCAsync($encodingAlg);

Creates an asynchronous task to call the ReceiveBytesENC method with the arguments provided.

Returns null on failure

top
ReceiveBytesToFile
# $appendFilename is a string
$status = $socket->ReceiveBytesToFile($appendFilename);

Receives one available block of bytes and appends it to the file named by appendFilename. If Chilkat already has buffered data, that data is used first. Otherwise, the method performs one receive operation; it does not loop until the peer closes or until an entire file has arrived. If no data is immediately available, it waits according to MaxReadIdleMs.

The file is appended to, not replaced: Existing file content is preserved and newly received bytes are written at the end of the file.
Failure and partial-file behavior: A network receive failure leaves the file unchanged. However, if the network read succeeds and a later file-writing error occurs, such as a disk-full or other filesystem error, the file may contain a partially written block. Bytes consumed by the receive are included in ReceivedCount even when the overall method fails.

After a timeout or application abort, the connection is generally still open. After a peer close or reset, the connection is no longer usable for I/O.

Returns 1 for success, 0 for failure.

More Information and Examples
top
ReceiveBytesToFileAsync (1)
# returns a CkTask
# $appendFilename is a string
$ret_task = $socket->ReceiveBytesToFileAsync($appendFilename);

Creates an asynchronous task to call the ReceiveBytesToFile method with the arguments provided.

Returns null on failure

top
ReceiveCount
$retInt = $socket->ReceiveCount();

Reads exactly four bytes and interprets them as a signed 32-bit two's-complement integer. Byte order is controlled by BigEndian, whose default is 1 for network byte order.

Negative values are returned unchanged, with one exception: -1 is reserved as the failure result. If the incoming four-byte value is 0xFFFFFFFF, the method deliberately reports failure, sets LastMethodFailed, and returns -1. A legitimately transmitted value of -1 therefore cannot be received as ordinary data. There is no unsigned variant, so wire values from 0x80000000 through 0xFFFFFFFE are returned as negative signed integers.

Partial integer reads: If the operation fails after receiving only part of the four-byte value, those bytes are consumed and discarded. They cannot be recovered by a later receive call, and the protocol stream may now be misaligned.
Round-trip rule: SendCount(N) followed by ReceiveCount round-trips every signed 32-bit value except -1.
More Information and Examples
top
ReceiveCountAsync (1)
# returns a CkTask
$ret_task = $socket->ReceiveCountAsync();

Creates an asynchronous task to call the ReceiveCount method with the arguments provided.

Returns null on failure

top
ReceiveInt16
# $bigEndian is a boolean
# $bUnsigned is a boolean
$status = $socket->ReceiveInt16($bigEndian, $bUnsigned);
Introduced in version 9.5.0.50

Reads exactly two bytes, interprets them as a two's-complement integer, and stores the result in ReceivedInt. Set bigEndian to 1 for network byte order or 0 for little-endian order. Set bUnsigned to 1 for a value from 0 through 65535; otherwise the result ranges from -32768 through 32767.

Partial integer reads: If the operation fails after receiving only part of the two-byte value, the partial bytes are consumed and discarded. They are not retained for a later receive, and the protocol stream may now be misaligned. ReceivedInt remains unchanged on failure, so use the Boolean return value before reading it.

Returns 1 for success, 0 for failure.

top
ReceiveInt16Async (1)
# returns a CkTask
# $bigEndian is a boolean
# $bUnsigned is a boolean
$ret_task = $socket->ReceiveInt16Async($bigEndian, $bUnsigned);
Introduced in version 9.5.0.50

Creates an asynchronous task to call the ReceiveInt16 method with the arguments provided.

Returns null on failure

top
ReceiveInt32
# $bigEndian is a boolean
$status = $socket->ReceiveInt32($bigEndian);
Introduced in version 9.5.0.50

Reads exactly four bytes, interprets them as a signed two's-complement integer, and stores the result in ReceivedInt. Set bigEndian to 1 for network byte order or 0 for little-endian order.

Partial integer reads: If the operation fails after receiving only part of the four-byte value, the partial bytes are consumed and discarded. They are not retained for a later receive, and the protocol stream may now be misaligned. ReceivedInt remains unchanged on failure, so use the Boolean return value before reading it.

Returns 1 for success, 0 for failure.

top
ReceiveInt32Async (1)
# returns a CkTask
# $bigEndian is a boolean
$ret_task = $socket->ReceiveInt32Async($bigEndian);
Introduced in version 9.5.0.50

Creates an asynchronous task to call the ReceiveInt32 method with the arguments provided.

Returns null on failure

top
ReceiveNBytesENC
# $numBytes is an integer
# $encodingAlg is a string
# $outStr is a CkString (output)
$status = $socket->ReceiveNBytesENC($numBytes, $encodingAlg, $outStr);
$retStr = $socket->receiveNBytesENC($numBytes, $encodingAlg);

Receives exactly numBytes bytes and returns them encoded using encodingAlg. Supported encoding names include base64, modBase64, base32, uu, qp, url, hex, q, b, url_oauth, url_rfc1738, url_rfc2396, and url_rfc3986. See all supported Chilkat binary encodings. Inactivity is controlled by MaxReadIdleMs.

Partial data is discarded on failure: If the exact byte count cannot be obtained, no partial encoded result is returned and the output string is empty. Any partial bytes already read are consumed from the connection and discarded; they are not retained internally and cannot be recovered by a later receive call. This differs from ReceiveBytesN and ReceiveBdN, which expose partial data on failure.
Validate lengths: Validate any peer-supplied length before requesting a large amount of data. If the peer sends too few bytes while keeping the connection open, the method waits until the inactivity timeout.

Returns 1 for success, 0 for failure.

top
ReceiveNBytesENCAsync (1)
# returns a CkTask
# $numBytes is an integer
# $encodingAlg is a string
$ret_task = $socket->ReceiveNBytesENCAsync($numBytes, $encodingAlg);

Creates an asynchronous task to call the ReceiveNBytesENC method with the arguments provided.

Returns null on failure

top
ReceiveSb
# $sb is a CkStringBuilder
$status = $socket->ReceiveSb($sb);
Introduced in version 9.5.0.65

Receives text, decodes it using StringCharset, and appends it to sb. Chilkat first uses any plaintext already buffered internally. Otherwise, it receives until it can append the first nonempty decoded result. The method does not continue reading merely to drain all data that may be available.

  • For plain TCP, the underlying direct read obtains at most ReceivePacketSize bytes.
  • For TLS or SSH, the amount is governed by the TLS record or SSH packet and is not limited by ReceivePacketSize.
  • Already-buffered plaintext is appended in full, even if it exceeds ReceivePacketSize.
  • On success, at least one received byte contributes to the appended text; this method does not return success with an empty receive result.
Inspect the destination even on failure: An orderly peer close reports ReceiveFailReason = 10, but sb may contain final text received immediately before the close.
TCP framing: TCP does not preserve message boundaries. Use a protocol-defined length or delimiter when a complete text message is required.

Returns 1 for success, 0 for failure.

top
ReceiveSbAsync (1)
# returns a CkTask
# $sb is a CkStringBuilder
$ret_task = $socket->ReceiveSbAsync($sb);
Introduced in version 9.5.0.65

Creates an asynchronous task to call the ReceiveSb method with the arguments provided.

Returns null on failure

top
ReceiveString
# $outStr is a CkString (output)
$status = $socket->ReceiveString($outStr);
$retStr = $socket->receiveString();

Receives text and decodes it using StringCharset. Chilkat first uses any plaintext already buffered internally. Otherwise, it receives until it can return the first nonempty decoded result. The method does not continue reading merely to drain all data that may be available.

  • For plain TCP, the underlying direct read obtains at most ReceivePacketSize bytes.
  • For TLS or SSH, the amount is governed by the TLS record or SSH packet and is not limited by ReceivePacketSize.
  • Already-buffered plaintext is returned in full, even if it exceeds ReceivePacketSize.
  • On success, the returned text represents at least one received byte; this method does not produce a successful empty result.
Inspect the returned text even on failure: An orderly peer close reports ReceiveFailReason = 10, but the returned string may contain final text received immediately before the close. For APIs that return a string directly, check LastMethodFailed without discarding the returned value.
Text framing: A receive can end in the middle of an application message or multibyte text sequence. For framed text protocols, prefer an exact-length or delimiter-based receive method.

Returns 1 for success, 0 for failure.

top
ReceiveStringAsync (1)
# returns a CkTask
$ret_task = $socket->ReceiveStringAsync();

Creates an asynchronous task to call the ReceiveString method with the arguments provided.

Returns null on failure

top
ReceiveStringMaxN
# $maxByteCount is an integer
# $outStr is a CkString (output)
$status = $socket->ReceiveStringMaxN($maxByteCount, $outStr);
$retStr = $socket->receiveStringMaxN($maxByteCount);

Receives and decodes text like ReceiveString, but returns at most maxByteCount input bytes. The limit is measured in bytes, not Unicode characters.

Important: A byte limit can split a multibyte character or a protocol message. Choose a limit compatible with the encoding and framing used by the peer.

Returns 1 for success, 0 for failure.

More Information and Examples
top
ReceiveStringMaxNAsync (1)
# returns a CkTask
# $maxByteCount is an integer
$ret_task = $socket->ReceiveStringMaxNAsync($maxByteCount);

Creates an asynchronous task to call the ReceiveStringMaxN method with the arguments provided.

Returns null on failure

top
ReceiveStringUntilByte
# $lookForByte is an integer
# $outStr is a CkString (output)
$status = $socket->ReceiveStringUntilByte($lookForByte, $outStr);
$retStr = $socket->receiveStringUntilByte($lookForByte);

Receives bytes until the raw byte value lookForByte is found. The delimiter is excluded from the returned string. The bytes preceding the delimiter are then decoded using StringCharset.

The delimiter search is purely byte-oriented and does not recognize character boundaries. A match may therefore occur inside the encoded representation of a multibyte character.

Multibyte character boundary: With a multibyte encoding, a non-ASCII delimiter byte can occur inside an encoded character. The receive can stop in the middle of that character, and the incomplete character may be dropped, replaced, or decoded incorrectly. Prefer an ASCII delimiter value below 0x80 with an ASCII-compatible charset such as UTF-8, an ISO-8859 encoding, a Windows-125x encoding, or Shift-JIS.

Returns 1 for success, 0 for failure.

top
ReceiveStringUntilByteAsync (1)
# returns a CkTask
# $lookForByte is an integer
$ret_task = $socket->ReceiveStringUntilByteAsync($lookForByte);

Creates an asynchronous task to call the ReceiveStringUntilByte method with the arguments provided.

Returns null on failure

top
ReceiveToCRLF
# $outStr is a CkString (output)
$status = $socket->ReceiveToCRLF($outStr);
$retStr = $socket->receiveToCRLF();

Receives text through a CRLF line terminator and returns the text including the terminator. Chilkat encodes the CR followed by LF characters using StringCharset, then searches the incoming byte stream for that exact encoded sequence. The accumulated bytes are decoded using the same charset after the delimiter is found.

Charset-dependent delimiter: For ASCII-compatible charsets such as UTF-8, US-ASCII, ISO-8859 encodings, Windows-125x encodings, and Shift-JIS, the delimiter bytes are the usual 0D 0A. With a wide charset such as UTF-16LE, the encoded delimiter is different, for example 0D 00 0A 00.
Tip: This method is useful for line-oriented text protocols. Do not use it for protocols that permit bare LF, binary data, or a different line terminator.

Returns 1 for success, 0 for failure.

top
ReceiveToCRLFAsync (1)
# returns a CkTask
$ret_task = $socket->ReceiveToCRLFAsync();

Creates an asynchronous task to call the ReceiveToCRLF method with the arguments provided.

Returns null on failure

top
ReceiveUntilByteBd
# $lookForByte is an integer
# $bd is a CkBinData
$status = $socket->ReceiveUntilByteBd($lookForByte, $bd);
Introduced in version 9.5.0.76

Reads bytes until lookForByte is encountered and appends all bytes up to and including the matching byte to bd. The delimiter must be an integer from 0 through 255 and is matched as a raw byte value.

Partial data remains on failure: If the delimiter is not found before a timeout, application abort, peer close, or connection reset, the method returns false, but everything received while searching remains appended to bd. These bytes are included in ReceivedCount, have been consumed from the connection, and are not retained internally for a later receive call.

A timeout or application abort generally leaves the connection open. A peer close or reset leaves it unavailable for further I/O.

Returns 1 for success, 0 for failure.

More Information and Examples
top
ReceiveUntilByteBdAsync (1)
# returns a CkTask
# $lookForByte is an integer
# $bd is a CkBinData
$ret_task = $socket->ReceiveUntilByteBdAsync($lookForByte, $bd);
Introduced in version 9.5.0.76

Creates an asynchronous task to call the ReceiveUntilByteBd method with the arguments provided.

Returns null on failure

top
ReceiveUntilMatch
# $matchStr is a string
# $outStr is a CkString (output)
$status = $socket->ReceiveUntilMatch($matchStr, $outStr);
$retStr = $socket->receiveUntilMatch($matchStr);

Receives bytes until the exact byte sequence represented by matchStr is found. Chilkat first encodes matchStr using StringCharset, then performs a case-sensitive, byte-for-byte comparison against the incoming stream. No case folding, Unicode normalization, or text-level comparison is performed.

The match may span multiple underlying network reads. After the delimiter is found, the complete accumulated byte sequence is decoded using StringCharset and returned as text. The returned text includes the matching delimiter.

Empty match strings: If matchStr is empty, or if it encodes to zero bytes under the current StringCharset, the method fails immediately with ReceiveFailReason = 4. No data is read from the connection and the returned string is empty.
Partial content is discarded on failure: If the delimiter is not found before a timeout, application abort, peer close, connection reset, or other failure, the returned string is empty. Bytes already consumed while searching are discarded, are not retained for a later receive, and cannot be recovered. If an orderly peer close is detected, ReceiveFailReason is 10.

On success, bytes read beyond the delimiter may remain buffered internally for the next receive call. This is why ReceivedCount can increase by more than the number of bytes represented by the returned string.

Returns 1 for success, 0 for failure.

top
ReceiveUntilMatchAsync (1)
# returns a CkTask
# $matchStr is a string
$ret_task = $socket->ReceiveUntilMatchAsync($matchStr);

Creates an asynchronous task to call the ReceiveUntilMatch method with the arguments provided.

Returns null on failure

top
ReceiveUntilMatchSb
# $matchStr is a string
# $sb is a CkStringBuilder
$status = $socket->ReceiveUntilMatchSb($matchStr, $sb);
Introduced in version 10.1.0

Receives bytes until the exact byte sequence represented by matchStr is found. Chilkat first encodes matchStr using StringCharset, then performs a case-sensitive, byte-for-byte comparison against the incoming stream. The match may span multiple underlying network reads.

After the delimiter is found, the accumulated bytes are decoded using StringCharset and appended to sb. The appended text includes the matching delimiter.

Empty match strings: If matchStr is empty, or if it encodes to zero bytes under the current StringCharset, the method fails immediately with ReceiveFailReason = 4. No data is read and sb is left unchanged.
The destination remains unchanged on failure: If the match is not found before a timeout, application abort, peer close, connection reset, or other failure, the method returns false and does not modify sb. Bytes consumed while searching are included in ReceivedCount, are discarded, are not retained for a later receive, and cannot be recovered. If an orderly peer close is detected, ReceiveFailReason is 10.

On success, bytes read beyond the delimiter may remain buffered internally for the next receive operation.

Returns 1 for success, 0 for failure.

top
ReceiveUntilMatchSbAsync (1)
# returns a CkTask
# $matchStr is a string
# $sb is a CkStringBuilder
$ret_task = $socket->ReceiveUntilMatchSbAsync($matchStr, $sb);
Introduced in version 10.1.0

Creates an asynchronous task to call the ReceiveUntilMatchSb method with the arguments provided.

Returns null on failure

top
ResetPerf
# $rcvPerf is a boolean
$socket->ResetPerf($rcvPerf);
Introduced in version 9.5.0.78

Restarts one direction of connection-level transfer-rate measurement. Set rcvPerf to 1 to reset receive measurement for RcvBytesPerSec; set it to 0 to reset send measurement for SendBytesPerSec.

More Information and Examples
top
SelectForReading
# $timeoutMs is an integer
$retInt = $socket->SelectForReading($timeoutMs);

Waits for read-ready activity on this socket or, when this object is a socket set, on any contained socket.

  • timeoutMs = 0 performs a nonblocking poll and returns immediately.
  • A positive value waits up to that many milliseconds.
  • A negative value currently produces an effectively very long wait. Applications should normally use 0 or a positive value rather than depend on this behavior.
Return valueMeaning
PositiveThe number of sockets in the read-ready result.
0No socket was ready at the time of the poll or before the timeout.
-1An error occurred.

A connected socket is read-ready when data is available or when a close/error condition can be detected. A listener is read-ready when an incoming connection is pending. Listener and connected sockets may coexist in one set, but the set does not identify which type a ready member is; the application must track that information and call AcceptNext or a receive method as appropriate.

Correct socket-set loop: If this method returns n, iterate from 0 through n - 1, assign each value directly to SelectorReadIndex, and then operate on this socket-set object. Do not assign the value to SelectorIndex.
Ready-set lifetime: The ready-set is fixed for this result, so it can be iterated safely. Its order is arbitrary, is not guaranteed to match insertion order, and can differ on the next select call. Calling either select method again invalidates all prior read/write indices.
Automatic pruning: Each select rebuilds the underlying descriptor set and removes contained sockets that can no longer contribute a valid descriptor. A dead socket can therefore remain counted only until the next select.
Readiness is not data: A receive may report that the peer closed or reset the connection instead of returning application data. Within one ready-set iteration, closing a selected socket does not renumber the other ready positions, but the closed socket's own position no longer resolves.
Socket sets overview: See Socket Sets Overview for an explanation of socket sets, selectors, readiness, ownership, and common usage patterns.
top
SelectForReadingAsync (1)
# returns a CkTask
# $timeoutMs is an integer
$ret_task = $socket->SelectForReadingAsync($timeoutMs);

Creates an asynchronous task to call the SelectForReading method with the arguments provided.

Returns null on failure

top
SelectForWriting
# $timeoutMs is an integer
$retInt = $socket->SelectForWriting($timeoutMs);

Waits for this socket, or sockets in a socket set, to become writable without blocking.

  • timeoutMs = 0 performs a nonblocking poll and returns immediately.
  • A positive value waits up to that many milliseconds.
  • A negative value currently produces an effectively very long wait. Applications should normally use 0 or a positive value rather than depend on this behavior.
Return valueMeaning
PositiveThe number of sockets in the write-ready result.
0No socket was writable at the time of the poll or before the timeout.
-1An error occurred.
Correct socket-set loop: If this method returns n, iterate from 0 through n - 1, assign each value directly to SelectorWriteIndex, and then operate on this socket-set object. Do not assign the value to SelectorIndex.
Ready-set lifetime: The result remains stable for the current iteration, but its order is arbitrary and need not match insertion order. Calling either select method again invalidates all prior read/write indices. Each select also prunes contained sockets that no longer have a usable descriptor.
Write readiness: TCP writes normally complete into the operating-system send buffer. Readiness does not mean the remote application has received or processed the data.
Socket sets overview: See Socket Sets Overview for an explanation of socket sets, selectors, readiness, ownership, and common usage patterns.
More Information and Examples
top
SelectForWritingAsync (1)
# returns a CkTask
# $timeoutMs is an integer
$ret_task = $socket->SelectForWritingAsync($timeoutMs);

Creates an asynchronous task to call the SelectForWriting method with the arguments provided.

Returns null on failure

top
SendBd
# $binData is a CkBinData
# $offset is an integer
# $numBytes is an integer
$status = $socket->SendBd($binData, $offset, $numBytes);
Introduced in version 9.5.0.65

Sends bytes from binData, beginning at offset. If numBytes is greater than 0, that many bytes are selected; if it is 0, bytes are selected from offset through the end. When both values are 0, the entire BinData is selected. The selected range must be valid.

The method is synchronous and uses MaxSendIdleMs as the maximum period during which no send progress may occur. No application message framing is added.

Partial transmission on failure: A failed call may already have sent part of the selected range. Chilkat does not retain or queue the unsent remainder and does not report the number of bytes sent. A timeout or application abort may leave the TCP connection open, but the protocol stream may contain a truncated message. For a framed protocol, normally close the connection and reconnect rather than sending the next message on the same stream. A peer close or reset leaves the connection unusable for further I/O.

Returns 1 for success, 0 for failure.

top
SendBdAsync (1)
# returns a CkTask
# $binData is a CkBinData
# $offset is an integer
# $numBytes is an integer
$ret_task = $socket->SendBdAsync($binData, $offset, $numBytes);
Introduced in version 9.5.0.65

Creates an asynchronous task to call the SendBd method with the arguments provided.

Returns null on failure

top
SendByte
# $value is an integer
$status = $socket->SendByte($value);
Introduced in version 9.5.0.50

Sends one byte whose value is specified by value. The value must be in the range 0 through 255. The method returns after the byte has been accepted for transmission or a send failure occurs.

Returns 1 for success, 0 for failure.

top
SendByteAsync (1)
# returns a CkTask
# $value is an integer
$ret_task = $socket->SendByteAsync($value);
Introduced in version 9.5.0.50

Creates an asynchronous task to call the SendByte method with the arguments provided.

Returns null on failure

top
SendBytesENC
# $encodedBytes is a string
# $encodingAlg is a string
$retBool = $socket->SendBytesENC($encodedBytes, $encodingAlg);

Decodes encodedBytes using encodingAlg, then sends the resulting binary bytes. Supported Chilkat encoding names include base64, modBase64, base32, base58, uu, qp, url, hex, q, b, url_oauth, url_rfc1738, url_rfc2396, and url_rfc3986. See all supported Chilkat binary encodings.

For example, encodedBytes="00010203040506" with encodingAlg="hex" sends seven bytes with values 00 through 06.

Important: Malformed encoded input causes the method to fail before or during sending. Check SendFailReason and LastErrorText.
More Information and Examples
top
SendBytesENCAsync (1)
# returns a CkTask
# $encodedBytes is a string
# $encodingAlg is a string
$ret_task = $socket->SendBytesENCAsync($encodedBytes, $encodingAlg);

Creates an asynchronous task to call the SendBytesENC method with the arguments provided.

Returns null on failure

top
SendCount
# $byteCount is an integer
$status = $socket->SendCount($byteCount);

Sends byteCount as its four-byte signed two's-complement bit pattern. Byte order is controlled by BigEndian, whose default is 1 for network byte order. Any signed 32-bit value is serialized without validation.

The peer can read the value using ReceiveCount, except that -1 is not usable as an ordinary count because ReceiveCount reserves -1 as its failure result.

Tip: A length prefix is a common way to frame messages over TCP: send the count first, then exactly that many payload bytes. Validate received lengths before allocating memory or waiting for data.

Returns 1 for success, 0 for failure.

More Information and Examples
top
SendCountAsync (1)
# returns a CkTask
# $byteCount is an integer
$ret_task = $socket->SendCountAsync($byteCount);

Creates an asynchronous task to call the SendCount method with the arguments provided.

Returns null on failure

top
SendInt16
# $value is an integer
# $bigEndian is a boolean
$status = $socket->SendInt16($value, $bigEndian);
Introduced in version 9.5.0.50

Sends the low 16 bits of value as a two-byte two's-complement bit pattern. Set bigEndian to 1 for network byte order or 0 for little-endian order.

No range validation is performed. Signed values from -32768 through 32767 and unsigned values from 0 through 65535 can be represented directly. Any other integer is silently truncated to its low 16 bits, equivalent to taking the value modulo 65536.

Examples: 40000 writes 0x9C40, -1 writes 0xFFFF, 65536 writes 0x0000, and 70000 writes 0x1170.

Returns 1 for success, 0 for failure.

top
SendInt16Async (1)
# returns a CkTask
# $value is an integer
# $bigEndian is a boolean
$ret_task = $socket->SendInt16Async($value, $bigEndian);
Introduced in version 9.5.0.50

Creates an asynchronous task to call the SendInt16 method with the arguments provided.

Returns null on failure

top
SendInt32
# $value is an integer
# $bigEndian is a boolean
$status = $socket->SendInt32($value, $bigEndian);
Introduced in version 9.5.0.50

Sends value as its complete four-byte signed two's-complement bit pattern. Set bigEndian to 1 for network byte order or 0 for little-endian order.

The parameter is a signed 32-bit integer and there is no unsigned overload, but every 32-bit wire pattern can be represented by passing the signed integer having that bit pattern. For example, passing -1 writes 0xFFFFFFFF. Because the input is already 32 bits, no bits are truncated.

Returns 1 for success, 0 for failure.

More Information and Examples
top
SendInt32Async (1)
# returns a CkTask
# $value is an integer
# $bigEndian is a boolean
$ret_task = $socket->SendInt32Async($value, $bigEndian);
Introduced in version 9.5.0.50

Creates an asynchronous task to call the SendInt32 method with the arguments provided.

Returns null on failure

top
SendSb
# $sb is a CkStringBuilder
$status = $socket->SendSb($sb);
Introduced in version 9.5.0.65

Encodes the contents of sb using StringCharset and sends the resulting bytes. The method is synchronous and uses MaxSendIdleMs as the send-progress inactivity limit.

Important: No terminator or length prefix is added. Include any protocol framing in the StringBuilder content.

Returns 1 for success, 0 for failure.

More Information and Examples
top
SendSbAsync (1)
# returns a CkTask
# $sb is a CkStringBuilder
$ret_task = $socket->SendSbAsync($sb);
Introduced in version 9.5.0.65

Creates an asynchronous task to call the SendSb method with the arguments provided.

Returns null on failure

top
SendString
# $stringToSend is a string
$status = $socket->SendString($stringToSend);

Encodes stringToSend using StringCharset and sends the resulting bytes over the connected TCP or TLS socket. The method is synchronous and uses MaxSendIdleMs as the maximum period during which no send progress may occur. No delimiter, terminator, or length prefix is added automatically.

Partial transmission on failure: A failed call may already have sent part of the encoded byte sequence. Chilkat does not retain or queue the unsent remainder and does not report how many bytes were sent. A timeout or application abort may leave the TCP connection open, but the application-protocol stream may contain a truncated message. For a framed protocol, normally close the connection and reconnect before sending another message. A peer close or reset leaves the connection unusable for further I/O.

Returns 1 for success, 0 for failure.

top
SendStringAsync (1)
# returns a CkTask
# $stringToSend is a string
$ret_task = $socket->SendStringAsync($stringToSend);

Creates an asynchronous task to call the SendString method with the arguments provided.

Returns null on failure

top
SendWakeOnLan
# $macAddress is a string
# $port is an integer
# $ipBroadcastAddr is a string
$status = $socket->SendWakeOnLan($macAddress, $port, $ipBroadcastAddr);
Introduced in version 9.5.0.69

Sends a Wake-on-LAN magic packet for macAddress to the UDP broadcast address ipBroadcastAddr and port. The MAC address is six bytes written as hexadecimal, for example 000102030405. Ports 7 and 9 are commonly used.

Call this method without first calling Connect. The target computer must have Wake-on-LAN enabled in firmware, the network adapter, and the operating system, and the network must permit the broadcast packet.

Important: Wake-on-LAN generally works within a local network segment. Routers commonly block directed broadcasts, and a successful send does not confirm that the target powered on.

Returns 1 for success, 0 for failure.

top
SendWakeOnLan2
# $macAddress is a string
# $port is an integer
# $ipBroadcastAddr is a string
# $password is a string
$status = $socket->SendWakeOnLan2($macAddress, $port, $ipBroadcastAddr, $password);
Introduced in version 9.5.0.77

Sends the same Wake-on-LAN magic packet as SendWakeOnLan and appends a SecureOn password. password is a hexadecimal string representing four or six bytes.

Important: SecureOn is an optional Wake-on-LAN password field, not encryption and not strong authentication. Support and expected length are device-specific.

Returns 1 for success, 0 for failure.

top
SetSslClientCert
# $cert is a CkCert
$status = $socket->SetSslClientCert($cert);

Configures cert as the client certificate for subsequent TLS connections. The certificate must have access to its private key. Use this only when the server requests or requires client-certificate authentication.

Important: Configure the client certificate before Connect or ConvertToSsl. A certificate without its private key cannot prove client identity.

Returns 1 for success, 0 for failure.

top
SetSslClientCertPem
# $pemDataOrFilename is a string
# $pemPassword is a string
$status = $socket->SetSslClientCertPem($pemDataOrFilename, $pemPassword);

Loads and configures a TLS client certificate and private key from PEM data or a PEM filename supplied in pemDataOrFilename. Use pemPassword when the private key is encrypted.

Important: The PEM material must include or make available the private key corresponding to the certificate. Configure it before the TLS handshake begins.

Returns 1 for success, 0 for failure.

More Information and Examples
top
SetSslClientCertPfx
# $pfxFilename is a string
# $pfxPassword is a string
$status = $socket->SetSslClientCertPfx($pfxFilename, $pfxPassword);

Loads and configures a TLS client certificate and private key from the PFX/P12 file pfxFilename, using pfxPassword. Use this only when the server requests or requires client-certificate authentication.

Important: Protect PFX files and passwords because they contain private-key material.

Returns 1 for success, 0 for failure.

top
SleepMs
# $millisec is an integer
$socket->SleepMs($millisec);

Pauses the calling thread for approximately millisec milliseconds. This is a convenience method and does not perform network I/O or keep a connection alive.

Important: Sleeping blocks the current thread. It is not a substitute for socket readiness methods, asynchronous I/O, or protocol timers.
top
SshAuthenticatePk
# $sshLogin is a string
# $privateKey is a CkSshKey
$status = $socket->SshAuthenticatePk($sshLogin, $privateKey);
Introduced in version 9.5.0.50

Authenticates the SSH tunnel session as sshLogin using privateKey. Call SshOpenTunnel first. The SSH server must have the corresponding public key authorized for that account.

Important: This authenticates the SSH transport used by the socket tunnel. It does not authenticate the final destination protocol reached through a forwarded channel.

Returns 1 for success, 0 for failure.

More Information and Examples
top
SshAuthenticatePkAsync (1)
# returns a CkTask
# $sshLogin is a string
# $privateKey is a CkSshKey
$ret_task = $socket->SshAuthenticatePkAsync($sshLogin, $privateKey);
Introduced in version 9.5.0.50

Creates an asynchronous task to call the SshAuthenticatePk method with the arguments provided.

Returns null on failure

top
SshAuthenticatePw
# $sshLogin is a string
# $sshPassword is a string
$status = $socket->SshAuthenticatePw($sshLogin, $sshPassword);
Introduced in version 9.5.0.50

Authenticates the SSH tunnel session using sshLogin and sshPassword. Call SshOpenTunnel first and authenticate before opening forwarded channels.

Important: Do not log or expose the SSH password. Public-key authentication is generally preferable when supported.

Returns 1 for success, 0 for failure.

More Information and Examples
top
SshAuthenticatePwAsync (1)
# returns a CkTask
# $sshLogin is a string
# $sshPassword is a string
$ret_task = $socket->SshAuthenticatePwAsync($sshLogin, $sshPassword);
Introduced in version 9.5.0.50

Creates an asynchronous task to call the SshAuthenticatePw method with the arguments provided.

Returns null on failure

top
SshCloseTunnel
$status = $socket->SshCloseTunnel();
Introduced in version 9.5.0.50

Closes the SSH tunnel opened by SshOpenTunnel and terminates its forwarded channels. It does not close unrelated SSH objects or connections.

Returns 1 for success, 0 for failure.

More Information and Examples
top
SshCloseTunnelAsync (1)
# returns a CkTask
$ret_task = $socket->SshCloseTunnelAsync();
Introduced in version 9.5.0.50

Creates an asynchronous task to call the SshCloseTunnel method with the arguments provided.

Returns null on failure

top
SshNewChannel
# $hostname is a string
# $port is an integer
# $ssl is a boolean
# $maxWaitMs is an integer
# $channel is a CkSocket
$status = $socket->SshNewChannel($hostname, $port, $ssl, $maxWaitMs, $channel);
Introduced in version 11.0.0

Opens a new port-forwarded channel through the authenticated SSH tunnel to hostname:port and populates channel with the connected socket. If ssl is 1, Chilkat establishes TLS to the destination inside the SSH tunnel.

  • maxWaitMs = 0 waits indefinitely for the channel/destination connection to open.
  • A positive value is used as supplied; unlike Connect, values below 100 milliseconds are not raised to a 100-millisecond minimum.
  • Negative values have no defined meaning and should not be used.

Multiple channels can share one authenticated SSH tunnel and can target different destination host/port pairs.

Required sequence: Call SshOpenTunnel and authenticate successfully before opening channels.

Returns 1 for success, 0 for failure.

More Information and Examples
top
SshNewChannelAsync (1)
# returns a CkTask
# $hostname is a string
# $port is an integer
# $ssl is a boolean
# $maxWaitMs is an integer
# $channel is a CkSocket
$ret_task = $socket->SshNewChannelAsync($hostname, $port, $ssl, $maxWaitMs, $channel);
Introduced in version 11.0.0

Creates an asynchronous task to call the SshNewChannel method with the arguments provided.

Returns null on failure

top
SshOpenTunnel
# $sshHostname is a string
# $sshPort is an integer
$status = $socket->SshOpenTunnel($sshHostname, $sshPort);
Introduced in version 9.5.0.50

Connects to the SSH server at sshHostname:sshPort and initializes an SSH tunneling session. Port 22 is conventional but not required.

After this succeeds, authenticate with SshAuthenticatePw or SshAuthenticatePk, then open forwarded destination channels with SshNewChannel. Multiple channels can share the same authenticated tunnel.

Timeouts: This method has no dedicated wait argument. SSH protocol read and write inactivity are governed by MaxReadIdleMs and MaxSendIdleMs. The default value of 0 for those properties permits an indefinite wait while no progress is made.

Returns 1 for success, 0 for failure.

top
SshOpenTunnelAsync (1)
# returns a CkTask
# $sshHostname is a string
# $sshPort is an integer
$ret_task = $socket->SshOpenTunnelAsync($sshHostname, $sshPort);
Introduced in version 9.5.0.50

Creates an asynchronous task to call the SshOpenTunnel method with the arguments provided.

Returns null on failure

top
StartTiming
$socket->StartTiming();

Starts or restarts the object's convenience timer. Read ElapsedSeconds to obtain the whole number of seconds since this call.

Note: This timer does not affect connection, send, or receive timeouts.
top
TakeConnection
# $sock is a CkSocket
$status = $socket->TakeConnection($sock);
Introduced in version 9.5.0.77

Moves the active connection from cSocket into this object. This object first releases its reference to any connection it previously held. Unlike TakeSocket, this method does not add a member to a socket set.

After success, cSocket holds no connection. It may be closed, destroyed, or reused immediately without affecting the transferred connection. Ownership is exclusive after the move; only this destination object controls the transferred connection.

Move semantics: This method transfers ownership rather than sharing the connection. Use DupSocket only when two wrappers must refer to the same underlying connection.

Returns 1 for success, 0 for failure.

More Information and Examples
top
TakeSocket
# $sock is a CkSocket
$status = $socket->TakeSocket($sock);

Moves the connection out of sock and into a newly created member of this object's socket set. After one or more successful calls, this object acts as a set of connected and/or listener sockets.

After success, sock holds no connection. It may be closed, destroyed, or reused immediately without affecting the transferred connection. The new set member owns the connection independently; there is no shared ownership to coordinate.

Set workflow: Use SelectorIndex to select a direct member. After SelectForReading or SelectForWriting, assign the ready position directly to SelectorReadIndex or SelectorWriteIndex.
Different from TakeConnection: TakeSocket adds a new member to the socket set. TakeConnection moves a connection into the receiving object itself and is not a set-building method.
Socket sets overview: See Socket Sets Overview for an explanation of socket sets, selectors, readiness, ownership, and common usage patterns.

Returns 1 for success, 0 for failure.

top
TlsRenegotiate
$status = $socket->TlsRenegotiate();
Introduced in version 9.5.0.55

Requests TLS renegotiation on an established TLS connection, causing another handshake to negotiate new security parameters where the protocol and peer support it.

Important: TLS 1.3 does not use legacy renegotiation, and many modern TLS 1.2 servers disable it. The method can therefore fail even on an otherwise healthy TLS connection.

Returns 1 for success, 0 for failure.

top
TlsRenegotiateAsync (1)
# returns a CkTask
$ret_task = $socket->TlsRenegotiateAsync();
Introduced in version 9.5.0.55

Creates an asynchronous task to call the TlsRenegotiate method with the arguments provided.

Returns null on failure

top
UseSsh
# $ssh is a CkSsh
$status = $socket->UseSsh($ssh);
Introduced in version 9.5.0.55

Configures this socket to route subsequent Connect calls through the already connected and authenticated Ssh object. The destination host and port passed to Connect are reached by SSH port forwarding rather than by a direct TCP connection.

This is one of several SSH-tunneling models in Chilkat. Alternatives include this class's SshOpenTunnel/SshNewChannel workflow and the separate SshTunnel class for background static or dynamic forwarding.

Important: The supplied Ssh object must remain connected and authenticated while the forwarded socket connection is being established and used.

Returns 1 for success, 0 for failure.

top

Deprecated

ListenIpv6
# $boolVal is a boolean
$boolVal = $socket->get_ListenIpv6();
$socket->put_ListenIpv6($boolVal);
This property is deprecated. It will be removed in a future version.

This property and PreferIpv6 are two names for the same underlying setting. Reading or writing either property reads or changes the same value.

For a listener, when ClientIpAddress is empty, the default 0 value causes BindAndListen and BindAndListenPortRange to bind to 0.0.0.0. Set it to 1 to bind to ::. When ClientIpAddress contains an explicit address, that address determines both the bind address and its IPv4 or IPv6 family.

Shared setting: Because this is the same setting as PreferIpv6, changing ListenIpv6 also changes the address-family preference used when an outbound hostname resolves to both IPv4 and IPv6 addresses.

top
AcceptNextConnection
# returns a CkSocket
# $maxWaitMs is an integer
$ret_socket = $socket->AcceptNextConnection($maxWaitMs);
This method is deprecated and replaced by AcceptNext

Deprecated: This method is deprecated. Use AcceptNext instead.

Waits for and accepts the next incoming connection on a listening socket. On success, a new Socket object is returned.

  • maxWaitMs = 0 waits indefinitely for an incoming connection.
  • A positive value waits up to that many milliseconds.
  • Negative values have no defined meaning and should not be used.
TLS listeners: Accepting a TLS connection also performs the TLS handshake. The wait for an incoming TCP connection uses maxWaitMs; handshake inactivity uses MaxReadIdleMs and MaxSendIdleMs. Leaving the idle timeouts at 0 permits an unresponsive client to keep the handshake waiting indefinitely.

Returns null on failure

top
AcceptNextConnectionAsync (1) (2)
# returns a CkTask
# $maxWaitMs is an integer
$ret_task = $socket->AcceptNextConnectionAsync($maxWaitMs);
This method is deprecated and replaced by AcceptNext

Creates an asynchronous task to call the AcceptNextConnection method with the arguments provided.

Returns null on failure

top
CloneSocket
# returns a CkSocket
$ret_socket = $socket->CloneSocket();
Introduced in version 9.5.0.47
This method is deprecated and replaced by DupSocket

Deprecated: This method is deprecated. Use DupSocket instead.

Returns another Socket object that shares the same underlying TCP or TLS connection. Reads and writes made through either object operate on the same byte stream.

Important: Sharing a connection does not create a second independent protocol session. Coordinate reads, writes, and closing carefully so that one object does not consume bytes or close the connection unexpectedly for the other.

Returns null on failure

More Information and Examples
top
GetMyCert
# returns a CkCert
$ret_cert = $socket->GetMyCert();
This method is deprecated and replaced by GetMyServerCert

Deprecated: This method is deprecated. Use GetMyServerCert instead.

Returns the certificate configured for this object when it is acting as a TLS server. The certificate is initially supplied to InitSslServer.

Returns null on failure

top
GetReceivedClientCert
# returns a CkCert
# $index is an integer
$ret_cert = $socket->GetReceivedClientCert($index);
This method is deprecated and replaced by GetRcvdClientCert

Deprecated: This method is deprecated. Use GetRcvdClientCert instead.

Returns the client certificate at the zero-based index received during the TLS handshake on an accepted server-side connection. Use NumReceivedClientCerts to determine the valid range.

Important: Call this on the accepted connection object returned by AcceptNextConnection, not on the listener. The server application remains responsible for deciding whether the certificate authorizes the client.

Returns null on failure

top
GetSslServerCert
# returns a CkCert
$ret_cert = $socket->GetSslServerCert();
This method is deprecated.

Deprecated: This method is deprecated. Use GetServerCert instead.

Returns the certificate presented by the remote TLS server for the current client-side TLS connection. It returns a null reference when the socket is not connected or the connection is not using TLS.

Returns null on failure

More Information and Examples
top
LastJsonData
# returns a CkJsonObject
$ret_jsonObject = $socket->LastJsonData();
Introduced in version 9.5.0.79
This method is deprecated.

Deprecated: This method is deprecated. Use GetLastJsonData instead.

Returns a JSON object containing additional details produced by the most recently called method when such details are available.

Important: Retrieve the data immediately after the operation of interest. A later method call can replace it, and many methods do not produce additional JSON details.

Returns null on failure

top
ReceiveBytes Deprecated
# $outData is a CkByteData (output)
$status = $socket->ReceiveBytes($outData);

Receives binary data and returns one delivery of bytes. Chilkat first returns any data already buffered internally. If no buffered data exists, the method performs one receive operation; it does not loop to drain everything that may be available.

  • For plain TCP, a direct read returns at most ReceivePacketSize bytes.
  • For TLS or SSH, the returned amount is governed by the TLS record or SSH packet rather than ReceivePacketSize.
  • Already-buffered data is returned in full, even if it exceeds ReceivePacketSize.
  • A successful call can return zero bytes during TLS renegotiation. Treat this as no application data yet and call the receive method again.
Inspect data even on failure: An orderly peer close reports ReceiveFailReason = 10, but the returned byte data may contain final bytes received immediately before the close. Process those bytes before finishing the receive loop.
TCP framing: TCP does not preserve message boundaries. Define framing in the application protocol, such as an exact length, delimiter, fixed-size record, or connection close.

Returns 1 for success, 0 for failure.

top
ReceiveBytesAsync Deprecated (1)
# returns a CkTask
$ret_task = $socket->ReceiveBytesAsync();

Creates an asynchronous task to call the ReceiveBytes method with the arguments provided.

Returns null on failure

top
ReceiveBytesN Deprecated
# $numBytes is an integer
# $outData is a CkByteData (output)
$status = $socket->ReceiveBytesN($numBytes, $outData);

Receives exactly numBytes bytes. The method continues receiving until the requested count is satisfied or a receive failure occurs. Inactivity is controlled by MaxReadIdleMs.

Partial data is returned on failure: If a timeout or connection close occurs after only part of the requested data is received, the method reports failure but the byte output contains those partial bytes. The bytes have been consumed from the connection and are not retained internally for a later receive call. Therefore, inspect both the failure status and the amount of returned data.

When the requested count is successfully completed, bytes read beyond that count may remain buffered internally for the next receive operation.

Validate lengths: Validate any peer-supplied length before receiving or allocating a large amount of data. If the peer sends too few bytes while keeping the connection open, the method waits until the inactivity timeout.

Returns 1 for success, 0 for failure.

top
ReceiveBytesNAsync Deprecated (1)
# returns a CkTask
# $numBytes is an integer
$ret_task = $socket->ReceiveBytesNAsync($numBytes);

Creates an asynchronous task to call the ReceiveBytesN method with the arguments provided.

Returns null on failure

top
ReceiveUntilByte Deprecated
# $lookForByte is an integer
# $outBytes is a CkByteData (output)
$status = $socket->ReceiveUntilByte($lookForByte, $outData);

Reads bytes until lookForByte is encountered and returns all bytes up to and including that byte. The argument must identify a one-byte value from 0 through 255.

Returns 1 for success, 0 for failure.

top
ReceiveUntilByteAsync Deprecated (1)
# returns a CkTask
# $lookForByte is an integer
$ret_task = $socket->ReceiveUntilByteAsync($lookForByte);

Creates an asynchronous task to call the ReceiveUntilByte method with the arguments provided.

Returns null on failure

top
SendBytes Deprecated
# $data is a CkByteData
$status = $socket->SendBytes($data);

Sends the bytes in data over the connected TCP or TLS socket. The method is synchronous and uses MaxSendIdleMs as the maximum period during which no send progress may occur.

Partial transmission on failure: A return value of false does not mean that no bytes were sent. Part of data may already have reached the peer. Chilkat does not retain or queue the unsent remainder and does not report how many bytes were sent. Although a timeout or application abort may leave the TCP connection open, the application-protocol stream may contain a truncated message. For a length-prefixed, delimited, or otherwise framed protocol, the safest response is normally to close the connection and reconnect before sending another message. A peer close or reset leaves the connection unusable for further I/O.
Transport versus application acknowledgment: A successful send means that Chilkat completed the local socket send. It does not prove that the remote application received, parsed, or accepted the data.

Returns 1 for success, 0 for failure.

top
SendBytesAsync Deprecated (1)
# returns a CkTask
# $data is a CkByteData
$ret_task = $socket->SendBytesAsync($data);

Creates an asynchronous task to call the SendBytes method with the arguments provided.

Returns null on failure

top
SshOpenChannel
# returns a CkSocket
# $hostname is a string
# $port is an integer
# $ssl is a boolean
# $maxWaitMs is an integer
$ret_socket = $socket->SshOpenChannel($hostname, $port, $ssl, $maxWaitMs);
Introduced in version 9.5.0.50
This method is deprecated and replaced by SshNewChannel

Deprecated: This method is deprecated. Use SshNewChannel instead.

Opens a port-forwarded channel through the authenticated SSH tunnel to hostname:port. If ssl is 1, Chilkat performs TLS to the destination inside the SSH tunnel. maxWaitMs limits destination connection establishment.

Note: Multiple channels can share one authenticated SSH tunnel and can target different destination endpoints.

Returns null on failure

top
SshOpenChannelAsync (1) (2)
# returns a CkTask
# $hostname is a string
# $port is an integer
# $ssl is a boolean
# $maxWaitMs is an integer
$ret_task = $socket->SshOpenChannelAsync($hostname, $port, $ssl, $maxWaitMs);
Introduced in version 9.5.0.50
This method is deprecated and replaced by SshNewChannel

Creates an asynchronous task to call the SshOpenChannel method with the arguments provided.

Returns null on failure

top