Class Socket
- All Implemented Interfaces:
AutoCloseable
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.
For an extended overview, see Socket Class Overview.
</section>
Event-capable: long-running methods report progress through a ProgressListener installed
with setProgressListener(ProgressListener), onAbortCheck(BooleanSupplier),
onPercentDone(IntPredicate) or onProgressInfo(BiConsumer).
Instances hold a native Chilkat object: close them with ChilkatObject.close() (try-with-resources) when
done; an unclosed instance is freed when it becomes unreachable.
- See Also:
- Online reference
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidacceptNext(int maxWaitMs, Socket socket)Waits for and accepts the next incoming connection on a socket previously configured byBindAndListenorBindAndListenPortRange.voidaddSslAcceptableClientCaDn(String certAuthDN)Adds a certificate-authority distinguished name to the list advertised by a TLS server when requesting a client certificate for mutual TLS.voidaddSslServerCert(Cert cert, String hostname)Adds a server certificate to be presented when a TLS client's SNI (Server Name Indication) hostname matcheshostname.voidbindAndListen(int port, int backLog)Binds a TCP listener toportand places it into listening mode.intbindAndListenPortRange(int beginPort, int endPort, int backLog)Searches the inclusive rangebeginPortthroughendPortfor an available TCP port, binds it, and begins listening.buildHttpGetRequest(String url)Builds and returns a simple HTTPGETrequest forurl.intcheckWriteable(int maxWaitMs)Waits for the connected socket to become writable.voidClears the accumulated text returned bySessionLogfor this wrapper.voidRemoves every certificate added byAddSslServerCert.voidcloseConnection(int maxWaitMs)Attempts to gracefully terminate and close the current TCP, TLS, or SSH channel connection.voidEstablishes a TCP connection tohostname:port.voidEnds the TLS layer while leaving the underlying TCP connection open for subsequent unencrypted communication.voidUpgrades an already connected plain TCP socket to TLS by performing a client-side TLS handshake over the existing connection.voidClears Chilkat's process-wide in-memory DNS cache.Resolveshostnameand returns one numeric IP address.voidPopulatesdestwith anotherSocketwrapper that shares this object's underlying connection.booleanSet this property totrueto request cancellation of the method currently executing on this object.intContains the numeric result for the most recentAcceptNextor deprecatedAcceptNextConnectionoperation.voidgetAdaptersAddresses(JsonObject json)Populatesjsonwith information about local network adapters, including IPv4 addresses, IPv6 addresses, and MAC addresses.A single application-layer protocol name for the TLS ALPN extension, such ash2orhttp/1.1.The list of ALPN (Application-Layer Protocol Negotiation) protocols, in preference order, as JSON.intLimits receive throughput to approximately the specified number of bytes per second.intLimits send throughput to approximately the specified number of bytes per second.booleanControls the byte order used bySendCountandReceiveCount.Specifies a numeric local IP address to use when binding the socket to a local interface.intSpecifies the local TCP port to bind before initiating an outbound connection.intContains the numeric result for the most recent connect-family operation, including TCP connection and SSH connection/channel setup.intReturns the whole number of seconds elapsed since the most recent call toStartTiming.intSpecifies the interval, in milliseconds, betweenAbortCheckcallbacks during supported long-running operations.Specifies the authentication method used with an HTTP proxy.Specifies the optional Windows domain used for NTLM authentication to an HTTP proxy.booleanSet this property totruewhen the proxied connection will carry HTTP requests, such as when aRestobject uses this socket throughUseConnection.Specifies the hostname or numeric IP address of the HTTP proxy.Specifies the password used to authenticate with the HTTP proxy.intSpecifies the TCP port of the HTTP proxy.Specifies the username used to authenticate with the HTTP proxy.booleanReturnstruewhen the socket is in its last known connected state; otherwise returnsfalse.booleanControls the operating systemSO_KEEPALIVEoption for the underlying TCP socket.booleanSet this property totrueto record bytes sent and received through this wrapper inSessionLog.voidgetLastJsonData(JsonObject json)Copies additional JSON details from the most recently called method intojson, when that method produced such information.booleanReturnstrueif the most recent action method called through this wrapper failed; otherwise returnsfalse.intReturns the port on which the socket is listening.Returns the local numeric IP address for the socket connection currently held by this object.intReturns the local TCP port for the socket connection or listener currently held by this object.intSpecifies the maximum number of milliseconds that a read-related operation may make no receive progress.intSpecifies the maximum number of milliseconds that a send-related operation may make no write progress.Returns a local IP address for the computer.voidgetMyServerCert(Cert cert)Copies the TLS server certificate configured byInitSslServerintocert.intReturns the number of bytes immediately available to the socket layer without waiting.intReturns the number of client certificates associated with the connection currently held by this object.intReturns the number of sockets contained in this object's socket set.intReturns the number of acceptable certificate-authority distinguished names supplied by the TLS server for the connection currently held by this object.intReturns the unique identifier assigned to this socket object.intDefines the numeric value that represents 100 percent inPercentDonecallbacks.booleanThis property andListenIpv6are two names for the same underlying setting.Returns the installed listener, ornull.intReturns the average raw receive rate, in bytes per second, since receive performance measurement began or was last reset.voidgetRcvdClientCert(int index, Cert cert)Copies the client certificate at zero-basedindexintocertfrom the TLS handshake of an accepted server-side connection.intTracks the cumulative number of application bytes actually received from the connection by receive operations.intContains the value produced by the most recent successful call through this wrapper toReceiveByte,ReceiveInt16, orReceiveInt32.intContains the numeric result for the most recent receive-side operation.intControls the maximum number of bytes requested by availability-based receive methods when Chilkat must perform a direct read from a plain TCP connection.Returns the numeric IP address of the peer for the connection currently held by this object.intReturns the TCP port of the peer for the connection currently held by this object.booleanControls what a TLS server does when the client's SNI (Server Name Indication) hostname matches no certificate added byAddSslServerCert.booleanControls verification of a server certificate when this object acts as a TLS client.intSelects a socket by its direct zero-based position in this object's socket set.intSelects a zero-based position in the read-ready result produced by the most recent call toSelectForReading.intSelects a zero-based position in the write-ready result produced by the most recent call toSelectForWriting.intReturns the average raw send rate, in bytes per second, since send performance measurement began or was last reset.intContains the numeric result for the most recent send-side operation.intSpecifies the internal chunk size used when sending a large amount of data over a plain TCP connection.voidgetServerCert(Cert cert)Copies the certificate presented by the remote TLS server intocertfor the current client-side TLS connection.Returns the accumulated send/receive session log for this wrapper whenKeepSessionLogistrue.Controls how bytes are rendered inSessionLog.Sets the Server Name Indication (SNI) hostname sent in the TLS ClientHello.Specifies the hostname or numeric IP address of the SOCKS proxy.Specifies the password for SOCKS5 username/password authentication.intSpecifies the TCP port of the SOCKS proxy.Specifies the SOCKS proxy username.intSelects whether connections are routed through a SOCKS proxy.intRequests the operating-system receive-buffer size for the TCP socket.booleanControls theSO_REUSEADDRoption for a socket that will bind and listen.intRequests the operating-system send-buffer size for the TCP socket.booleangetSsl()Controls whether incoming connections accepted by this listener must complete a TLS handshake.getSslAcceptableClientCaDn(int index)Returns the certificate-authority distinguished name at zero-basedindexfrom the list sent by a TLS server when it requests a client certificate.Restricts the cipher suites permitted for TLS connections.Selects the SSL/TLS protocol version allowed for secure connections.Specifies the character encoding used by text-oriented socket methods.booleanControls theTCP_NODELAYoption.Returns the cipher suite from the most recent successful TLS handshake performed by thisSocketobject, for exampleTLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384.Specifies one or more expected SubjectPublicKeyInfo (SPKI) fingerprints for TLS public-key pinning.booleanReturnstruewhen this connection was resumed from a session ticket instead of being fully handshaked; otherwise returnsfalse.intThe number of seconds a session ticket issued by this TLS server remains valid.Returns the protocol version from the most recent successful TLS handshake performed by thisSocketobject, such asTLS 1.2orTLS 1.3.Provides comma-separated compatibility or platform-specific options.Stores arbitrary application text with the socket object.voidinitSslServer(Cert cert)Configures this object for server-side TLS usingcertas the server certificate.voidonAbortCheck(BooleanSupplier callback)Installs a listener whose only callback isabortCheck: called everyHeartbeatMsmilliseconds during a long-running method; returntrueto abort it.voidonPercentDone(IntPredicate callback)Installs a listener whose only callback ispercentDone: called with the completion percentage (0..100) as a long-running method progresses; returntrueto abort it.voidonProgressInfo(BiConsumer<String,String> callback)Installs a listener whose only callback isprogressInfo: called with a name/value pair of progress information as a long-running method proceeds.booleanPerforms a nonblocking check for readable activity on the socket.voidReceives one delivery of binary data and appends it tobinData.voidreceiveBdN(long numBytes, BinData binData)Receives exactlynumBytesbytes and appends them tobinData.voidreceiveByte(boolean bUnsigned)Reads exactly one byte from the connection and stores its numeric value inReceivedInt.receiveBytesENC(String encodingAlg)Receives binary data and returns one delivery encoded as text usingencodingAlg.voidreceiveBytesToFile(String appendFilename)Receives one available block of bytes and appends it to the file named byappendFilename.intReads exactly four bytes and interprets them as a signed 32-bit two's-complement integer.voidreceiveInt16(boolean bigEndian, boolean bUnsigned)Reads exactly two bytes, interprets them as a two's-complement integer, and stores the result inReceivedInt.voidreceiveInt32(boolean bigEndian)Reads exactly four bytes, interprets them as a signed two's-complement integer, and stores the result inReceivedInt.receiveNBytesENC(long numBytes, String encodingAlg)Receives exactlynumBytesbytes and returns them encoded usingencodingAlg.voidreceiveSb(StringBuilder sb)Receives text, decodes it usingStringCharset, and appends it tosb.Receives text and decodes it usingStringCharset.receiveStringMaxN(int maxByteCount)Receives and decodes text likeReceiveString, but returns at mostmaxByteCountinput bytes.receiveStringUntilByte(int lookForByte)Receives bytes until the raw byte valuelookForByteis found.Receives text through a CRLF line terminator and returns the text including the terminator.voidreceiveUntilByteBd(int lookForByte, BinData bd)Reads bytes untillookForByteis encountered and appends all bytes up to and including the matching byte tobd.receiveUntilMatch(String matchStr)Receives bytes until the exact byte sequence represented bymatchStris found.voidreceiveUntilMatchSb(String matchStr, StringBuilder sb)Receives bytes until the exact byte sequence represented bymatchStris found.voidresetPerf(boolean rcvPerf)Restarts one direction of connection-level transfer-rate measurement.intselectForReading(int timeoutMs)Waits for read-ready activity on this socket or, when this object is a socket set, on any contained socket.intselectForWriting(int timeoutMs)Waits for this socket, or sockets in a socket set, to become writable without blocking.voidSends bytes frombinData, beginning atoffset.voidsendByte(int value)Sends one byte whose value is specified byvalue.voidsendBytesENC(String encodedBytes, String encodingAlg)DecodesencodedBytesusingencodingAlg, then sends the resulting binary bytes.voidsendCount(int byteCount)SendsbyteCountas its four-byte signed two's-complement bit pattern.voidsendInt16(int value, boolean bigEndian)Sends the low 16 bits ofvalueas a two-byte two's-complement bit pattern.voidsendInt32(int value, boolean bigEndian)Sendsvalueas its complete four-byte signed two's-complement bit pattern.voidsendSb(StringBuilder sb)Encodes the contents ofsbusingStringCharsetand sends the resulting bytes.voidsendString(String stringToSend)EncodesstringToSendusingStringCharsetand sends the resulting bytes over the connected TCP or TLS socket.voidsendWakeOnLan(String macAddress, int port, String ipBroadcastAddr)Sends a Wake-on-LAN magic packet formacAddressto the UDP broadcast addressipBroadcastAddrandport.voidsendWakeOnLan2(String macAddress, int port, String ipBroadcastAddr, String password)Sends the same Wake-on-LAN magic packet asSendWakeOnLanand appends a SecureOn password.voidsetAbortCurrent(boolean value)Sets theAbortCurrentproperty; seegetAbortCurrent().voidsetAlpnProtocol(String value)Sets theAlpnProtocolproperty; seegetAlpnProtocol().voidsetAlpnProtocols(String value)Sets theAlpnProtocolsproperty; seegetAlpnProtocols().voidsetBandwidthThrottleDown(int value)Sets theBandwidthThrottleDownproperty; seegetBandwidthThrottleDown().voidsetBandwidthThrottleUp(int value)Sets theBandwidthThrottleUpproperty; seegetBandwidthThrottleUp().voidsetBigEndian(boolean value)Sets theBigEndianproperty; seegetBigEndian().voidsetClientIpAddress(String value)Sets theClientIpAddressproperty; seegetClientIpAddress().voidsetClientPort(int value)Sets theClientPortproperty; seegetClientPort().voidsetHeartbeatMs(int value)Sets theHeartbeatMsproperty; seegetHeartbeatMs().voidsetHttpProxyAuthMethod(String value)Sets theHttpProxyAuthMethodproperty; seegetHttpProxyAuthMethod().voidsetHttpProxyDomain(String value)Sets theHttpProxyDomainproperty; seegetHttpProxyDomain().voidsetHttpProxyForHttp(boolean value)Sets theHttpProxyForHttpproperty; seegetHttpProxyForHttp().voidsetHttpProxyHostname(String value)Sets theHttpProxyHostnameproperty; seegetHttpProxyHostname().voidsetHttpProxyPassword(String value)Sets theHttpProxyPasswordproperty; seegetHttpProxyPassword().voidsetHttpProxyPort(int value)Sets theHttpProxyPortproperty; seegetHttpProxyPort().voidsetHttpProxyUsername(String value)Sets theHttpProxyUsernameproperty; seegetHttpProxyUsername().voidsetKeepAlive(boolean value)Sets theKeepAliveproperty; seegetKeepAlive().voidsetKeepSessionLog(boolean value)Sets theKeepSessionLogproperty; seegetKeepSessionLog().voidsetMaxReadIdleMs(int value)Sets theMaxReadIdleMsproperty; seegetMaxReadIdleMs().voidsetMaxSendIdleMs(int value)Sets theMaxSendIdleMsproperty; seegetMaxSendIdleMs().voidsetPercentDoneScale(int value)Sets thePercentDoneScaleproperty; seegetPercentDoneScale().voidsetPreferIpv6(boolean value)Sets thePreferIpv6property; seegetPreferIpv6().voidsetProgressListener(ProgressListener listener)Installs the listener that receives this object's progress events (abortCheck,percentDone,progressInfo) during its long-running methods; replaces any listener or lambda installed before;nullremoves it.voidsetReceivedCount(int value)Sets theReceivedCountproperty; seegetReceivedCount().voidsetReceivedInt(int value)Sets theReceivedIntproperty; seegetReceivedInt().voidsetReceivePacketSize(int value)Sets theReceivePacketSizeproperty; seegetReceivePacketSize().voidsetRequireSniMatch(boolean value)Sets theRequireSniMatchproperty; seegetRequireSniMatch().voidsetRequireSslCertVerify(boolean value)Sets theRequireSslCertVerifyproperty; seegetRequireSslCertVerify().voidsetSelectorIndex(int value)Sets theSelectorIndexproperty; seegetSelectorIndex().voidsetSelectorReadIndex(int value)Sets theSelectorReadIndexproperty; seegetSelectorReadIndex().voidsetSelectorWriteIndex(int value)Sets theSelectorWriteIndexproperty; seegetSelectorWriteIndex().voidsetSendPacketSize(int value)Sets theSendPacketSizeproperty; seegetSendPacketSize().voidsetSessionLogEncoding(String value)Sets theSessionLogEncodingproperty; seegetSessionLogEncoding().voidsetSniHostname(String value)Sets theSniHostnameproperty; seegetSniHostname().voidsetSocksHostname(String value)Sets theSocksHostnameproperty; seegetSocksHostname().voidsetSocksPassword(String value)Sets theSocksPasswordproperty; seegetSocksPassword().voidsetSocksPort(int value)Sets theSocksPortproperty; seegetSocksPort().voidsetSocksUsername(String value)Sets theSocksUsernameproperty; seegetSocksUsername().voidsetSocksVersion(int value)Sets theSocksVersionproperty; seegetSocksVersion().voidsetSoRcvBuf(int value)Sets theSoRcvBufproperty; seegetSoRcvBuf().voidsetSoReuseAddr(boolean value)Sets theSoReuseAddrproperty; seegetSoReuseAddr().voidsetSoSndBuf(int value)Sets theSoSndBufproperty; seegetSoSndBuf().voidsetSsl(boolean value)Sets theSslproperty; seegetSsl().voidsetSslAllowedCiphers(String value)Sets theSslAllowedCiphersproperty; seegetSslAllowedCiphers().voidsetSslClientCert(Cert cert)Configurescertas the client certificate for subsequent TLS connections.voidsetSslClientCertPem(String pemDataOrFilename, String pemPassword)Loads and configures a TLS client certificate and private key from PEM data or a PEM filename supplied inpemDataOrFilename.voidsetSslClientCertPfx(String pfxFilename, String pfxPassword)Loads and configures a TLS client certificate and private key from the PFX/P12 filepfxFilename, usingpfxPassword.voidsetSslProtocol(String value)Sets theSslProtocolproperty; seegetSslProtocol().voidsetStringCharset(String value)Sets theStringCharsetproperty; seegetStringCharset().voidsetTcpNoDelay(boolean value)Sets theTcpNoDelayproperty; seegetTcpNoDelay().voidsetTlsPinSet(String value)Sets theTlsPinSetproperty; seegetTlsPinSet().voidsetTlsTicketKey(BinData binKey)Sets the key this TLS server uses to encrypt and decrypt session tickets.voidsetTlsTicketLifetimeSeconds(int value)Sets theTlsTicketLifetimeSecondsproperty; seegetTlsTicketLifetimeSeconds().voidsetUncommonOptions(String value)Sets theUncommonOptionsproperty; seegetUncommonOptions().voidsetUserData(String value)Sets theUserDataproperty; seegetUserData().voidsleepMs(int millisec)Pauses the calling thread for approximatelymillisecmilliseconds.voidsshAuthenticatePk(String sshLogin, SshKey privateKey)Authenticates the SSH tunnel session assshLoginusingprivateKey.voidsshAuthenticatePw(String sshLogin, String sshPassword)Authenticates the SSH tunnel session usingsshLoginandsshPassword.voidCloses the SSH tunnel opened bySshOpenTunneland terminates its forwarded channels.voidsshNewChannel(String hostname, int port, boolean ssl, int maxWaitMs, Socket channel)Opens a new port-forwarded channel through the authenticated SSH tunnel tohostname:portand populateschannelwith the connected socket.voidsshOpenTunnel(String sshHostname, int sshPort)Connects to the SSH server atsshHostname:sshPortand initializes an SSH tunneling session.voidStarts or restarts the object's convenience timer.voidtakeConnection(Socket sock)Moves the active connection fromcSocketinto this object.voidtakeSocket(Socket sock)Moves the connection out ofsockand into a newly created member of this object's socket set.voidRequests TLS renegotiation on an established TLS connection, causing another handshake to negotiate new security parameters where the protocol and peer support it.voidConfigures this socket to route subsequentConnectcalls through the already connected and authenticatedSshobject.Methods inherited from class com.chilkatsoft.chilkat2.ChilkatObject
close, getDebugLogFilePath, getLastErrorHtml, getLastErrorText, getLastErrorXml, getLastMethodSuccess, getVerboseLogging, getVersion, isClosed, setDebugLogFilePath, setLastMethodSuccess, setVerboseLogging, toString
-
Constructor Details
-
Socket
public Socket()Creates a newSocketobject.
-
-
Method Details
-
getAbortCurrent
public boolean getAbortCurrent()Set this property totrueto 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
false. 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
LastErrorTextdescribes the abort.- Returns:
- the value of the
AbortCurrentproperty
-
setAbortCurrent
public void setAbortCurrent(boolean value)Sets theAbortCurrentproperty; seegetAbortCurrent().- Parameters:
value- the new value
-
getAcceptFailReason
public int getAcceptFailReason()Contains the numeric result for the most recentAcceptNextor deprecatedAcceptNextConnectionoperation. The initial value is0. It is reset to0when an accept begins, remains0on 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.
Code Meaning
0 Success.
1 An asynchronous accept operation is already in progress.
3 Internal failure, such as an allocation failure.
5 No incoming connection was accepted before the wait interval expired.
6 The operation was aborted by the application.
9 An unspecified fatal socket error occurred.
20 The socket has not first been bound and placed into listening mode.
99 The Chilkat component is not unlocked.
100 TLS internal error.
102 Unexpected TLS handshake message.
109 Failed to read TLS handshake messages.
114 Failed to send the ChangeCipherSpec message.
115 Failed to send the Finished message.
116 The client's Finished message was invalid.
117 Unable to agree on a TLS protocol version.
118 Unable to agree on a cipher suite.
119 Failed to read the client's ClientHello message.
120 Failed to send TLS handshake messages.
121 Failed to process the client certificate message.
122 Failed to process the client certificate URL message.
123 Failed to process the client key-exchange message.
124 Failed to process the CertificateVerify message.
125 An SSL 2.0 connection attempt was received and rejected.
129 The client and server share no ALPN protocol. (Added in 11.7.0. See
AlpnProtocols.)130 The client's SNI hostname matched no server certificate and
RequireSniMatchis set. (Added in 11.7.0.)131 The client offered a session ticket for a session that used the extended master secret, but its ClientHello did not offer that extension. (Added in 11.7.0.)
- Returns:
- the value of the
AcceptFailReasonproperty (read-only)
-
getAlpnProtocol
A single application-layer protocol name for the TLS ALPN extension, such ash2orhttp/1.1. Leave it empty when ALPN is not required.Setting this property sets the ALPN list to this one protocol, replacing anything previously set by it or by
AlpnProtocols. Setting an empty string clears the list. To offer or support more than one protocol, useAlpnProtocolsinstead.Getting this property returns the protocol that was negotiated for the connection. Before a handshake has completed, and on a connection where ALPN was not negotiated, it returns the first protocol in the ALPN list, which for an application that set a single protocol is the protocol it set.
Changed in 11.7.0: After a handshake this property returns the negotiated protocol rather than the configured one. For a connection that negotiated the protocol that was set – which is every case prior to 11.7.0, because only one protocol could be offered – the value is unchanged. Prior to 11.7.0 a TLS server ignored ALPN entirely, and a TLS client could offer only one protocol. Note: ALPN negotiation does not implement the selected application protocol. The application must still speak that protocol over the established TLS connection.
- Returns:
- the value of the
AlpnProtocolproperty
-
setAlpnProtocol
Sets theAlpnProtocolproperty; seegetAlpnProtocol().- Parameters:
value- the new value (notnull)
-
getAlpnProtocols
The list of ALPN (Application-Layer Protocol Negotiation) protocols, in preference order, as JSON. On a TLS client this is the set of protocols offered. On a TLS listener it is the set of protocols the server supports.Setting this property accepts either a JSON array, such as
["h2","http/1.1"], or a JSON object with aprotocolsmember, such as{"protocols":["h2","http/1.1"]}. Setting an empty string clears the list. Getting this property returns the object form, so a value read from it can be passed back to it unchanged.This property and
AlpnProtocoladdress the same underlying list. SettingAlpnProtocolreplaces the list with that single protocol id, and setting this property replaces the whole list. An application normally uses one or the other.An object that leaves the list empty does not use ALPN at all.
Server behavior when nothing matches: A TLS server that sets this list and shares no protocol with the client refuses the connection with the
no_application_protocolalert, as RFC 7301 requires, andAcceptFailReasonis set to 129. A server that leaves the list empty ignores ALPN and accepts the connection. Note: ALPN negotiation does not implement the selected application protocol. The application must still speak that protocol over the established TLS connection.- Returns:
- the value of the
AlpnProtocolsproperty
-
setAlpnProtocols
Sets theAlpnProtocolsproperty; seegetAlpnProtocols().- Parameters:
value- the new value (notnull)
-
getBandwidthThrottleDown
public int getBandwidthThrottleDown()Limits receive throughput to approximately the specified number of bytes per second. The default value is0, which disables receive throttling.Note: The limit is approximate and is applied over time; it does not define socket packet sizes or message boundaries.
- Returns:
- the value of the
BandwidthThrottleDownproperty
-
setBandwidthThrottleDown
public void setBandwidthThrottleDown(int value)Sets theBandwidthThrottleDownproperty; seegetBandwidthThrottleDown().- Parameters:
value- the new value
-
getBandwidthThrottleUp
public int getBandwidthThrottleUp()Limits send throughput to approximately the specified number of bytes per second. The default value is0, which disables send throttling.Note: The limit is approximate and is applied over time; it does not define socket packet sizes or message boundaries.
- Returns:
- the value of the
BandwidthThrottleUpproperty
-
setBandwidthThrottleUp
public void setBandwidthThrottleUp(int value)Sets theBandwidthThrottleUpproperty; seegetBandwidthThrottleUp().- Parameters:
value- the new value
-
getBigEndian
public boolean getBigEndian()Controls the byte order used bySendCountandReceiveCount. The default istrue, which uses big-endian byte order (network byte order). Set it tofalseto use little-endian byte order.Note: This property applies only to the four-byte count methods. The
SendInt16,SendInt32,ReceiveInt16, andReceiveInt32methods receive their byte-order choice as an argument.- Returns:
- the value of the
BigEndianproperty
-
setBigEndian
public void setBigEndian(boolean value)Sets theBigEndianproperty; seegetBigEndian().- Parameters:
value- the new value
-
getClientIpAddress
Specifies a numeric local IP address to use when binding the socket to a local interface.- Outbound connections: Before
Connectestablishes 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:
BindAndListenandBindAndListenPortRangebind to exactly this address. Leave the property empty to listen on all interfaces:0.0.0.0for IPv4 or::for IPv6.
ClientIpAddressIPv6 preference Listener bind addressEmpty
false0.0.0.0(all IPv4 interfaces)Empty
true::(all IPv6 interfaces)Explicit address Not used to choose the family Exactly 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.1or::1creates a loopback-only listener that remote computers cannot reach.- Returns:
- the value of the
ClientIpAddressproperty
- Outbound connections: Before
-
setClientIpAddress
Sets theClientIpAddressproperty; seegetClientIpAddress().- Parameters:
value- the new value (notnull)
-
getClientPort
public int getClientPort()Specifies the local TCP port to bind before initiating an outbound connection. The default value is0, 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.
- Returns:
- the value of the
ClientPortproperty
-
setClientPort
public void setClientPort(int value)Sets theClientPortproperty; seegetClientPort().- Parameters:
value- the new value
-
getConnectFailReason
public int getConnectFailReason()Contains the numeric result for the most recent connect-family operation, including TCP connection and SSH connection/channel setup. The initial value is0. It is reset to0when a connect-family call begins, remains0on 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.
Code Meaning
0 Success.
1 The hostname is empty.
2 DNS lookup failed.
3 DNS lookup timed out.
4 The operation was aborted by the application.
5 Internal failure.
6 The TCP connection attempt timed out.
7 The connection was rejected or otherwise could not be established.
100 TLS internal error.
101 Failed to send ClientHello.
102 Unexpected TLS handshake message.
103 Failed to read ServerHello.
104 The server did not provide a certificate.
105 Unexpected TLS protocol version.
106 Server-certificate verification failed.
107 The negotiated TLS protocol version was not permitted.
108 An application-defined server-certificate requirement failed.
109 Failed to read TLS handshake messages.
110 Failed to send the client-certificate message.
111 Failed to send the client key-exchange message.
112 The client certificate's private key was not accessible.
113 Failed to send the client CertificateVerify message.
114 Failed to send the ChangeCipherSpec message.
115 Failed to send the Finished message.
116 The server's Finished message was invalid.
Note: The TCP connection timeout supplied to
Connectis distinct from DNS, proxy, and TLS-handshake inactivity limits. SeeMaxReadIdleMsandMaxSendIdleMs.- Returns:
- the value of the
ConnectFailReasonproperty (read-only)
-
getElapsedSeconds
public int getElapsedSeconds()Returns the whole number of seconds elapsed since the most recent call toStartTiming. It returns0if 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.
- Returns:
- the value of the
ElapsedSecondsproperty (read-only)
-
getHeartbeatMs
public int getHeartbeatMs()Specifies the interval, in milliseconds, betweenAbortCheckcallbacks during supported long-running operations. The default is0, which disables periodicAbortCheckcallbacks.Note: This setting does not send network heartbeat packets and does not implement TCP keepalive. It only controls application callbacks that provide an opportunity to cancel an operation.
- Returns:
- the value of the
HeartbeatMsproperty
-
setHeartbeatMs
public void setHeartbeatMs(int value)Sets theHeartbeatMsproperty; seegetHeartbeatMs().- Parameters:
value- the new value
-
getHttpProxyAuthMethod
Specifies the authentication method used with an HTTP proxy. Supported values areBasicandNTLM. 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.
- Returns:
- the value of the
HttpProxyAuthMethodproperty
-
setHttpProxyAuthMethod
Sets theHttpProxyAuthMethodproperty; seegetHttpProxyAuthMethod().- Parameters:
value- the new value (notnull)
-
getHttpProxyDomain
Specifies the optional Windows domain used for NTLM authentication to an HTTP proxy. It is ignored unlessHttpProxyAuthMethodisNTLM.- Returns:
- the value of the
HttpProxyDomainproperty
-
setHttpProxyDomain
Sets theHttpProxyDomainproperty; seegetHttpProxyDomain().- Parameters:
value- the new value (notnull)
-
getHttpProxyForHttp
public boolean getHttpProxyForHttp()Set this property totruewhen the proxied connection will carry HTTP requests, such as when aRestobject uses this socket throughUseConnection. The default isfalse.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
CONNECTtunnel.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.
- Returns:
- the value of the
HttpProxyForHttpproperty
-
setHttpProxyForHttp
public void setHttpProxyForHttp(boolean value)Sets theHttpProxyForHttpproperty; seegetHttpProxyForHttp().- Parameters:
value- the new value
-
getHttpProxyHostname
Specifies the hostname or numeric IP address of the HTTP proxy. Leave it empty to connect directly without an HTTP proxy.- Returns:
- the value of the
HttpProxyHostnameproperty
-
setHttpProxyHostname
Sets theHttpProxyHostnameproperty; seegetHttpProxyHostname().- Parameters:
value- the new value (notnull)
-
getHttpProxyPassword
Specifies the password used to authenticate with the HTTP proxy. It is used together withHttpProxyUsernameand the selectedHttpProxyAuthMethod.Important: Do not write proxy passwords to logs or expose them in diagnostic output.
- Returns:
- the value of the
HttpProxyPasswordproperty
-
setHttpProxyPassword
Sets theHttpProxyPasswordproperty; seegetHttpProxyPassword().- Parameters:
value- the new value (notnull)
-
getHttpProxyPort
public int getHttpProxyPort()Specifies the TCP port of the HTTP proxy. Common values include8080and3128, but the correct port is determined by the proxy configuration.- Returns:
- the value of the
HttpProxyPortproperty
-
setHttpProxyPort
public void setHttpProxyPort(int value)Sets theHttpProxyPortproperty; seegetHttpProxyPort().- Parameters:
value- the new value
-
getHttpProxyUsername
Specifies the username used to authenticate with the HTTP proxy. It is ignored when the proxy does not require authentication.- Returns:
- the value of the
HttpProxyUsernameproperty
-
setHttpProxyUsername
Sets theHttpProxyUsernameproperty; seegetHttpProxyUsername().- Parameters:
value- the new value (notnull)
-
getIsConnected
public boolean getIsConnected()Returnstruewhen the socket is in its last known connected state; otherwise returnsfalse. 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
trueuntil 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.- Returns:
- the value of the
IsConnectedproperty (read-only)
-
getKeepAlive
public boolean getKeepAlive()Controls the operating systemSO_KEEPALIVEoption for the underlying TCP socket. The default istrue.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.
- Returns:
- the value of the
KeepAliveproperty
-
setKeepAlive
public void setKeepAlive(boolean value)Sets theKeepAliveproperty; seegetKeepAlive().- Parameters:
value- the new value
-
getKeepSessionLog
public boolean getKeepSessionLog()Set this property totrueto record bytes sent and received through this wrapper inSessionLog. The default isfalse. UseSessionLogEncodingto 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.
- Returns:
- the value of the
KeepSessionLogproperty
-
setKeepSessionLog
public void setKeepSessionLog(boolean value)Sets theKeepSessionLogproperty; seegetKeepSessionLog().- Parameters:
value- the new value
-
getLastMethodFailed
public boolean getLastMethodFailed()Returnstrueif the most recent action method called through this wrapper failed; otherwise returnsfalse. The initial value isfalse. An action method clears this state when it begins and leaves itfalseon success or sets it totrueon 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, andClearSessionLog.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.
- Returns:
- the value of the
LastMethodFailedproperty (read-only)
-
getListenPort
public int getListenPort()Returns the port on which the socket is listening. This is especially useful after callingBindAndListenwith port0, which asks the operating system to select an available port.- Returns:
- the value of the
ListenPortproperty (read-only)
-
getLocalIpAddress
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.
- Returns:
- the value of the
LocalIpAddressproperty (read-only)
-
getLocalPort
public int getLocalPort()Returns the local TCP port for the socket connection or listener currently held by this object. When binding to port0, read this property orListenPortafter success to discover the operating-system-selected port.Returns
0when the object holds no connection or listener. The value is read from the current connection and is never retained from an earlier connection.- Returns:
- the value of the
LocalPortproperty (read-only)
-
getMaxReadIdleMs
public int getMaxReadIdleMs()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.0means 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.- Returns:
- the value of the
MaxReadIdleMsproperty
-
setMaxReadIdleMs
public void setMaxReadIdleMs(int value)Sets theMaxReadIdleMsproperty; seegetMaxReadIdleMs().- Parameters:
value- the new value
-
getMaxSendIdleMs
public int getMaxSendIdleMs()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.0means 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.
- Returns:
- the value of the
MaxSendIdleMsproperty
-
setMaxSendIdleMs
public void setMaxSendIdleMs(int value)Sets theMaxSendIdleMsproperty; seegetMaxSendIdleMs().- Parameters:
value- the new value
-
getMyIpAddress
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
LocalIpAddressandLocalPort.- Returns:
- the value of the
MyIpAddressproperty (read-only)
-
getNumBytesAvailable
public int getNumBytesAvailable()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.
- Returns:
- the value of the
NumBytesAvailableproperty (read-only)
-
getNumReceivedClientCerts
public int getNumReceivedClientCerts()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 byAcceptNext, then callGetRcvdClientCertwith indexes from0throughNumReceivedClientCerts - 1.Returns
0when 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. IfConvertFromSslremoves 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.
- Returns:
- the value of the
NumReceivedClientCertsproperty (read-only)
-
getNumSocketsInSet
public int getNumSocketsInSet()Returns the number of sockets contained in this object's socket set. A normalSocketobject becomes a socket set after one or more successful calls toTakeSocket. 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
SelectForReadingorSelectForWriting. A select operation rebuilds the set and automatically prunes members that no longer have a usable descriptor.Selection: Use
SelectorIndexfor a direct set position. After a select call, useSelectorReadIndexorSelectorWriteIndexdirectly; do not translate the ready index intoSelectorIndex.Socket sets overview: See Socket Sets Overview for an explanation of socket sets, selectors, readiness, ownership, and common usage patterns.- Returns:
- the value of the
NumSocketsInSetproperty (read-only)
-
getNumSslAcceptableClientCAs
public int getNumSslAcceptableClientCAs()Returns the number of acceptable certificate-authority distinguished names supplied by the TLS server for the connection currently held by this object. UseGetSslAcceptableClientCaDnto retrieve each DN by zero-based index.Returns
0when 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.
- Returns:
- the value of the
NumSslAcceptableClientCAsproperty (read-only)
-
getObjectId
public int getObjectId()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.
- Returns:
- the value of the
ObjectIdproperty (read-only)
-
getPercentDoneScale
public int getPercentDoneScale()Defines the numeric value that represents 100 percent inPercentDonecallbacks. The default is100. For example, a scale of1000permits tenths-of-a-percent values, so453represents 45.3 percent.Values are clamped to the range
10through100000. The property affects only operations whose progress can be measured and only language bindings that expose callbacks.- Returns:
- the value of the
PercentDoneScaleproperty
-
setPercentDoneScale
public void setPercentDoneScale(int value)Sets thePercentDoneScaleproperty; seegetPercentDoneScale().- Parameters:
value- the new value
-
getPreferIpv6
public boolean getPreferIpv6()This property andListenIpv6are two names for the same underlying setting. Reading or writing either property reads or changes the same value. The default isfalse.- Outbound connections: When a hostname resolves to both IPv4 and IPv6 addresses,
falseprefers IPv4 andtrueprefers IPv6. - Listeners: When
ClientIpAddressis empty,falsebinds to0.0.0.0andtruebinds to::. When an explicitClientIpAddressis 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.
- Returns:
- the value of the
PreferIpv6property
- Outbound connections: When a hostname resolves to both IPv4 and IPv6 addresses,
-
setPreferIpv6
public void setPreferIpv6(boolean value)Sets thePreferIpv6property; seegetPreferIpv6().- Parameters:
value- the new value
-
getRcvBytesPerSec
public int getRcvBytesPerSec()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. CallResetPerfwithtrueto restart receive measurement.- Returns:
- the value of the
RcvBytesPerSecproperty (read-only)
-
getReceiveFailReason
public int getReceiveFailReason()Contains the numeric result for the most recent receive-side operation. The initial value is0. It is reset to0when a receive begins, remains0on 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.
Code Meaning
0 Success.
1 An asynchronous receive operation is already in progress.
2 The socket is not connected.
3 Internal failure, such as an allocation failure.
4 Invalid parameters were supplied. For delimiter-based receives, this includes an empty match string or a match string that encodes to zero bytes.
5 No additional data arrived within
MaxReadIdleMs.6 The operation was aborted by the application.
7 The peer reset the connection.
8 The host operating system aborted the established connection.
9 An unspecified fatal socket error occurred.
10 The 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
Socketobject may still be closed or reused for a newConnectoperation.- Returns:
- the value of the
ReceiveFailReasonproperty (read-only)
-
getReceivePacketSize
public int getReceivePacketSize()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 is4096.-
For plain TCP, methods such as
ReceiveBytes,ReceiveBd,ReceiveString, andReceiveSbobtain 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.
- Returns:
- the value of the
ReceivePacketSizeproperty
-
For plain TCP, methods such as
-
setReceivePacketSize
public void setReceivePacketSize(int value)Sets theReceivePacketSizeproperty; seegetReceivePacketSize().- Parameters:
value- the new value
-
getReceivedCount
public int getReceivedCount()Tracks the cumulative number of application bytes actually received from the connection by receive operations. The application may assign0at 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
RcvBytesPerSecwhen measuring raw transfer rate including protocol overhead.- Returns:
- the value of the
ReceivedCountproperty
-
setReceivedCount
public void setReceivedCount(int value)Sets theReceivedCountproperty; seegetReceivedCount().- Parameters:
value- the new value
-
getReceivedInt
public int getReceivedInt()Contains the value produced by the most recent successful call through this wrapper toReceiveByte,ReceiveInt16, orReceiveInt32. The initial value is0. 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
ReceivedIntonly after the corresponding receive method has returned success. After a failed call it may still contain a valid-looking value from an earlier operation.- Returns:
- the value of the
ReceivedIntproperty
-
setReceivedInt
public void setReceivedInt(int value)Sets theReceivedIntproperty; seegetReceivedInt().- Parameters:
value- the new value
-
getRemoteIpAddress
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 toConnect.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.
- Returns:
- the value of the
RemoteIpAddressproperty (read-only)
-
getRemotePort
public int getRemotePort()Returns the TCP port of the peer for the connection currently held by this object.Returns
0when the object holds no connected peer. The value is read from the current connection and is never retained from an earlier connection.- Returns:
- the value of the
RemotePortproperty (read-only)
-
getRequireSniMatch
public boolean getRequireSniMatch()Controls what a TLS server does when the client's SNI (Server Name Indication) hostname matches no certificate added byAddSslServerCert. The default isfalse.When
false, the connection is served the default certificate, which is the one passed toInitSslServer. Whentrue, the handshake is refused with theunrecognized_namealert andAcceptFailReasonis set to 130.Applies to the listener: Set this property on the listening socket before
AcceptNext. It has no effect on a client-side connection.- Returns:
- the value of the
RequireSniMatchproperty
-
setRequireSniMatch
public void setRequireSniMatch(boolean value)Sets theRequireSniMatchproperty; seegetRequireSniMatch().- Parameters:
value- the new value
-
getRequireSslCertVerify
public boolean getRequireSslCertVerify()Controls verification of a server certificate when this object acts as a TLS client. The default isfalse.When
true, 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. Whenfalse, these normal certificate-validity and trust-chain checks are not required.Independent checks:
RequireSslCertVerifycontrols normal certificate verification. Public-key pinning configured byTlsPinSetis a separate check and is enforced whenever a pin set is present, even when this property isfalse.- Returns:
- the value of the
RequireSslCertVerifyproperty
-
setRequireSslCertVerify
public void setRequireSslCertVerify(boolean value)Sets theRequireSslCertVerifyproperty; seegetRequireSslCertVerify().- Parameters:
value- the new value
-
getSelectorIndex
public int getSelectorIndex()Selects a socket by its direct zero-based position in this object's socket set. Valid values range from0throughNumSocketsInSet - 1. While this selector is active, ordinary connection methods and properties are routed to that contained socket.Mutually exclusive selectors:
SelectorIndex,SelectorReadIndex, andSelectorWriteIndexare mutually exclusive. Assigning any one clears the other two. Do not copy a read-ready or write-ready index intoSelectorIndex; settingSelectorReadIndexorSelectorWriteIndexalready 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 oldSelectorIndexcan 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.- Returns:
- the value of the
SelectorIndexproperty
-
setSelectorIndex
public void setSelectorIndex(int value)Sets theSelectorIndexproperty; seegetSelectorIndex().- Parameters:
value- the new value
-
getSelectorReadIndex
public int getSelectorReadIndex()Selects a zero-based position in the read-ready result produced by the most recent call toSelectForReading. If that call returnedn, valid values are0throughn - 1. After assigning this property, callAcceptNext, 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
SelectorReadIndexclearsSelectorIndexandSelectorWriteIndex. Do not setSelectorIndexafterward, 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 toSelectForReadingorSelectForWritinginvalidates prior ready indices.Socket sets overview: See Socket Sets Overview for an explanation of socket sets, selectors, readiness, ownership, and common usage patterns.- Returns:
- the value of the
SelectorReadIndexproperty
-
setSelectorReadIndex
public void setSelectorReadIndex(int value)Sets theSelectorReadIndexproperty; seegetSelectorReadIndex().- Parameters:
value- the new value
-
getSelectorWriteIndex
public int getSelectorWriteIndex()Selects a zero-based position in the write-ready result produced by the most recent call toSelectForWriting. If that call returnedn, valid values are0throughn - 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
SelectorWriteIndexclearsSelectorIndexandSelectorReadIndex. Do not setSelectorIndexafterward. 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.- Returns:
- the value of the
SelectorWriteIndexproperty
-
setSelectorWriteIndex
public void setSelectorWriteIndex(int value)Sets theSelectorWriteIndexproperty; seegetSelectorWriteIndex().- Parameters:
value- the new value
-
getSendBytesPerSec
public int getSendBytesPerSec()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. CallResetPerfwithfalseto restart send measurement.- Returns:
- the value of the
SendBytesPerSecproperty (read-only)
-
getSendFailReason
public int getSendFailReason()Contains the numeric result for the most recent send-side operation. The initial value is0. It is reset to0when a send begins, remains0on 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.
Code Meaning
0 Success.
1 An asynchronous send operation is already in progress.
2 The socket is not connected.
3 Internal failure, such as an allocation failure.
4 Invalid parameters were supplied.
5 The socket made no send progress for longer than
MaxSendIdleMs.6 The operation was aborted by the application.
7 The peer reset the connection.
8 The host operating system aborted the established connection.
9 An unspecified fatal socket error occurred.
10 The peer closed the connection.
11 Text or encoded input could not be converted or decoded, such as an invalid
StringCharsetconversion 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.
- Returns:
- the value of the
SendFailReasonproperty (read-only)
-
getSendPacketSize
public int getSendPacketSize()Specifies the internal chunk size used when sending a large amount of data over a plain TCP connection. The default is65535bytes. 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.
- Returns:
- the value of the
SendPacketSizeproperty
-
setSendPacketSize
public void setSendPacketSize(int value)Sets theSendPacketSizeproperty; seegetSendPacketSize().- Parameters:
value- the new value
-
getSessionLog
Returns the accumulated send/receive session log for this wrapper whenKeepSessionLogistrue. UseSessionLogEncodingto choose an escaped or hexadecimal representation andClearSessionLogto 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.
- Returns:
- the value of the
SessionLogproperty (read-only)
-
getSessionLogEncoding
Controls how bytes are rendered inSessionLog. The default isesc.Value Format
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.- Returns:
- the value of the
SessionLogEncodingproperty
-
setSessionLogEncoding
Sets theSessionLogEncodingproperty; seegetSessionLogEncoding().- Parameters:
value- the new value (notnull)
-
getSniHostname
Sets the Server Name Indication (SNI) hostname sent in the TLS ClientHello. By default, Chilkat uses the hostname passed toConnect. 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. Added in 11.7.0 – server side: On the socket returned by
AcceptNext, this property is the hostname the client asked for, or empty if the client sent no SNI. UseAddSslServerCertto present a different certificate per hostname.- Returns:
- the value of the
SniHostnameproperty
-
setSniHostname
Sets theSniHostnameproperty; seegetSniHostname().- Parameters:
value- the new value (notnull)
-
getSoRcvBuf
public int getSoRcvBuf()Requests the operating-system receive-buffer size for the TCP socket. The default requested value is4194304bytes. 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.
- Returns:
- the value of the
SoRcvBufproperty
-
setSoRcvBuf
public void setSoRcvBuf(int value)Sets theSoRcvBufproperty; seegetSoRcvBuf().- Parameters:
value- the new value
-
getSoReuseAddr
public boolean getSoReuseAddr()Controls theSO_REUSEADDRoption for a socket that will bind and listen. The default istrue. Set it beforeBindAndListen,BindAndListenPortRange, orInitSslServer.Important: The exact meaning of
SO_REUSEADDRdiffers across operating systems. It can help restart a listener after a previous connection, but it is not a portable substitute for exclusive-port ownership.- Returns:
- the value of the
SoReuseAddrproperty
-
setSoReuseAddr
public void setSoReuseAddr(boolean value)Sets theSoReuseAddrproperty; seegetSoReuseAddr().- Parameters:
value- the new value
-
getSoSndBuf
public int getSoSndBuf()Requests the operating-system send-buffer size for the TCP socket. The default requested value is262144bytes. Most applications should leave it unchanged.Note: The operating system may round, clamp, or internally scale the value. Test representative workloads before increasing it.
- Returns:
- the value of the
SoSndBufproperty
-
setSoSndBuf
public void setSoSndBuf(int value)Sets theSoSndBufproperty; seegetSoSndBuf().- Parameters:
value- the new value
-
getSocksHostname
Specifies the hostname or numeric IP address of the SOCKS proxy. It is used only whenSocksVersionis4or5.- Returns:
- the value of the
SocksHostnameproperty
-
setSocksHostname
Sets theSocksHostnameproperty; seegetSocksHostname().- Parameters:
value- the new value (notnull)
-
getSocksPassword
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.
- Returns:
- the value of the
SocksPasswordproperty
-
setSocksPassword
Sets theSocksPasswordproperty; seegetSocksPassword().- Parameters:
value- the new value (notnull)
-
getSocksPort
public int getSocksPort()Specifies the TCP port of the SOCKS proxy. The default is1080. It is used only whenSocksVersionis4or5.- Returns:
- the value of the
SocksPortproperty
-
setSocksPort
public void setSocksPort(int value)Sets theSocksPortproperty; seegetSocksPort().- Parameters:
value- the new value
-
getSocksUsername
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.- Returns:
- the value of the
SocksUsernameproperty
-
setSocksUsername
Sets theSocksUsernameproperty; seegetSocksUsername().- Parameters:
value- the new value (notnull)
-
getSocksVersion
public int getSocksVersion()Selects whether connections are routed through a SOCKS proxy.Value Behavior
0 Do not use a SOCKS proxy. This is the default.
4 Connect through a SOCKS4 proxy.
5 Connect through a SOCKS5 proxy.
- Returns:
- the value of the
SocksVersionproperty
-
setSocksVersion
public void setSocksVersion(int value)Sets theSocksVersionproperty; seegetSocksVersion().- Parameters:
value- the new value
-
getSsl
public boolean getSsl()Controls whether incoming connections accepted by this listener must complete a TLS handshake. The default isfalse. Set it totruefor a TLS server listener.Important: This is a listener requirement, not a connection-state indicator. Configure the server certificate with
InitSslServerbefore accepting TLS clients. Do not useTlsVersionorTlsCipherSuitealone 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.- Returns:
- the value of the
Sslproperty
-
setSsl
public void setSsl(boolean value)Sets theSslproperty; seegetSsl().- Parameters:
value- the new value
-
getSslAllowedCiphers
Restricts the cipher suites permitted for TLS connections. This property has the same behavior asChilkat.Http.SslAllowedCiphersand 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, andrc4remain recognized for compatibility.Security: Avoid obsolete suites based on RC4, DES, or 3DES. The set of implemented suites and the meaning of
best-practicescan change with Chilkat versions and platform capabilities.- Returns:
- the value of the
SslAllowedCiphersproperty
-
setSslAllowedCiphers
Sets theSslAllowedCiphersproperty; seegetSslAllowedCiphers().- Parameters:
value- the new value (notnull)
-
getSslProtocol
Selects the SSL/TLS protocol version allowed for secure connections. This property has the same behavior asChilkat.Http.SslProtocoland applies to TLS client connections and TLS server handshakes.Accepted values are:
defaultTLS 1.3TLS 1.2TLS 1.1TLS 1.0SSL 3.0TLS 1.3 or higherTLS 1.2 or higherTLS 1.1 or higherTLS 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 asTLS 1.2 or higheris 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.
- Returns:
- the value of the
SslProtocolproperty
-
setSslProtocol
Sets theSslProtocolproperty; seegetSslProtocol().- Parameters:
value- the new value (notnull)
-
getStringCharset
Specifies the character encoding used by text-oriented socket methods. Examples includeutf-8,windows-1252,shift_jis, andiso-8859-1. The default isansi.The value
ansimeans 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
SendStringandSendSbencode text using this charset. String receive methods decode incoming bytes from this charset, includingReceiveString,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-8rather thanansi. Use byte-oriented methods when the protocol is binary or exact byte preservation is required.- Returns:
- the value of the
StringCharsetproperty
-
setStringCharset
Sets theStringCharsetproperty; seegetStringCharset().- Parameters:
value- the new value (notnull)
-
getTcpNoDelay
public boolean getTcpNoDelay()Controls theTCP_NODELAYoption. The default isfalse, allowing the Nagle algorithm. Set it totrueto 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.
- Returns:
- the value of the
TcpNoDelayproperty
-
setTcpNoDelay
public void setTcpNoDelay(boolean value)Sets theTcpNoDelayproperty; seegetTcpNoDelay().- Parameters:
value- the new value
-
getTlsCipherSuite
Returns the cipher suite from the most recent successful TLS handshake performed by thisSocketobject, for exampleTLS_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, andConvertFromSsl. 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.- Returns:
- the value of the
TlsCipherSuiteproperty (read-only)
-
getTlsPinSet
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, andripemd320. Supported encodings includebase64,hex, and other Chilkat-supported binary encodings.Independent enforcement: Pin matching is enforced whenever this property is nonempty, even if
RequireSslCertVerifyisfalse. Normal certificate validity and trust-chain verification remain separately controlled byRequireSslCertVerify. Key rotation: Pinning is operationally strict. Add backup pins before rotating the server key, or a legitimate certificate replacement can break connectivity.- Returns:
- the value of the
TlsPinSetproperty
-
setTlsPinSet
Sets theTlsPinSetproperty; seegetTlsPinSet().- Parameters:
value- the new value (notnull)
-
getTlsSessionResumed
public boolean getTlsSessionResumed()Returnstruewhen this connection was resumed from a session ticket instead of being fully handshaked; otherwise returnsfalse.Read it on the socket returned by
AcceptNextfor a server-side connection, or afterConnectfor a client-side connection. It applies to both TLS 1.2 and TLS 1.3 resumption.A resumed connection exchanges no certificates: Neither side sends a Certificate message when the session is resumed. On the server, the client certificate from the original handshake is restored, so
GetRcvdClientCertandNumReceivedClientCertsstill work, but only the client's own certificate is restored and not the rest of its chain.- Returns:
- the value of the
TlsSessionResumedproperty (read-only)
-
getTlsTicketLifetimeSeconds
public int getTlsTicketLifetimeSeconds()The number of seconds a session ticket issued by this TLS server remains valid. The default is7200(2 hours). The maximum is604800(7 days, the limit set by RFC 8446); a larger value is reduced to that maximum. Set it to0to issue no tickets, which disables session resumption for this server.Applies to both TLS 1.2 session tickets (RFC 5077) and TLS 1.3 session tickets (RFC 8446). A resuming client skips the certificate exchange and the server's signature, so a resumed handshake is both smaller and faster than a full one.
No configuration required: A random ticket key is generated automatically, so resumption works for the life of a listener without calling
SetTlsTicketKey. That method is only needed when tickets must stay valid across processes or restarts.- Returns:
- the value of the
TlsTicketLifetimeSecondsproperty
-
setTlsTicketLifetimeSeconds
public void setTlsTicketLifetimeSeconds(int value)Sets theTlsTicketLifetimeSecondsproperty; seegetTlsTicketLifetimeSeconds().- Parameters:
value- the new value
-
getTlsVersion
Returns the protocol version from the most recent successful TLS handshake performed by thisSocketobject, such asTLS 1.2orTLS 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, andConvertFromSsl. 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.- Returns:
- the value of the
TlsVersionproperty (read-only)
-
getUncommonOptions
Provides comma-separated compatibility or platform-specific options. The default is the empty string and should normally remain unchanged.Keyword Behavior
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.
- Returns:
- the value of the
UncommonOptionsproperty
-
setUncommonOptions
Sets theUncommonOptionsproperty; seegetUncommonOptions().- Parameters:
value- the new value (notnull)
-
getUserData
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.- Returns:
- the value of the
UserDataproperty
-
setUserData
Sets theUserDataproperty; seegetUserData().- Parameters:
value- the new value (notnull)
-
acceptNext
Waits for and accepts the next incoming connection on a socket previously configured byBindAndListenorBindAndListenPortRange. For a TLS listener, acceptance includes the server-side TLS handshake.maxWaitMs = 0waits 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 toCloseis 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 destinationsocketis left completely unchanged. The listening socket also remains active after a timeout or a per-client TLS failure, so the application may immediately callAcceptNextagain 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.
Setting Inherited from listener?
MaxReadIdleMs/MaxSendIdleMsNoVerbose logging and debug-log path No
Upload/download bandwidth throttling No
Socket buffers and TCP no-delay options No
SslAllowedCiphers/SslProtocolNoTLS state: The server certificate configuration created by
InitSslServerremains 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:maxWaitMsgoverns the wait for the incoming TCP connection. Handshake inactivity is governed byMaxReadIdleMsandMaxSendIdleMson the listener.- Parameters:
maxWaitMs- themaxWaitMsargumentsocket- thesocketargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
addSslAcceptableClientCaDn
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
AddSslAcceptableClientCaDnbeforeInitSslServer. The acceptable-CA list is captured whenInitSslServercreates 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
AcceptNextsucceeds, inspect the client certificates on the accepted socket and apply the application's authorization policy.- Parameters:
certAuthDN- thecertAuthDNargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
addSslServerCert
Adds a server certificate to be presented when a TLS client's SNI (Server Name Indication) hostname matcheshostname. This allows one listening socket to serve more than one hostname, each with its own certificate. The certificate must have access to its corresponding private key.hostnamemay be an exact name such aswww.example.com, a leading wildcard such as*.example.com, or an empty string to add a default certificate. Call this method once for each certificate.The certificate for a connection is chosen after the client's ClientHello has been read, in this order, with the first match winning:
- an exact, case-insensitive match on the hostname;
- a leading-wildcard match, where
*.example.commatchesa.example.combut neitherexample.comnora.b.example.com; - a default certificate added by this method with an empty hostname;
- the certificate passed to
InitSslServer.
A client that sends no SNI hostname goes directly to step 3. Two certificates may be added for the same hostname, in which case the first one added is used.
Call order does not matter: Unlike
AddSslAcceptableClientCaDn, this method may be called before or afterInitSslServer, and also while the socket is already listening.InitSslServeris still required: it installs the default certificate and configures the socket for server-side TLS. The certificate object may be released: This method keeps its own reference to the certificate, so the application may discardcertas soon as the call returns.The hostname the client asked for can be read from the
SniHostnameproperty of the socket returned byAcceptNext. To refuse a connection whose requested hostname matches nothing, setRequireSniMatch.Returns
truefor success,falsefor failure. Failure includes a certificate with no accessible private key, which is reported here rather than during a later handshake.- Parameters:
cert- thecertargument (notnull)hostname- thehostnameargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
bindAndListen
public void bindAndListen(int port, int backLog)Binds a TCP listener toportand places it into listening mode. After this method succeeds, callAcceptNextto accept incoming connections.When
ClientIpAddressis empty, the listener binds to all interfaces:0.0.0.0when the sharedListenIpv6/PreferIpv6setting isfalse, or::when it istrue. To restrict the listener to one local interface, setClientIpAddressto that interface's numeric address before calling this method. The explicit address also determines whether the listener is IPv4 or IPv6.backLogis 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
0forportto let the operating system choose an available port, then readListenPort.Remote access by default: Because an empty
ClientIpAddressbinds to all interfaces, remote computers can connect by default, subject to routing and firewall rules. SetClientIpAddressto127.0.0.1or::1for 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 toCloseis 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, callAddSslAcceptableClientCaDnfirst. Then callInitSslServer,BindAndListen, andAcceptNext, in that order. CallingInitSslServerafter 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.- Parameters:
port- theportargumentbackLog- thebackLogargument- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
bindAndListenPortRange
public int bindAndListenPortRange(int beginPort, int endPort, int backLog)Searches the inclusive rangebeginPortthroughendPortfor an available TCP port, binds it, and begins listening. The method returns the selected port, or-1when no port can be bound or another error occurs.When
ClientIpAddressis empty, the listener binds to all interfaces:0.0.0.0when the sharedListenIpv6/PreferIpv6setting isfalse, or::when it istrue. SetClientIpAddressto a numeric local address to bind only to that interface; the explicit address determines the address family.backLogis 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
AcceptNextto accept incoming connections. For TLS listeners, completeAddSslAcceptableClientCaDn, if needed, andInitSslServerbefore calling this method.- Parameters:
beginPort- thebeginPortargumentendPort- theendPortargumentbackLog- thebackLogargument- Returns:
- the result (see
ChilkatObject.getLastMethodSuccess()where the description mentions failure)
-
buildHttpGetRequest
Builds and returns a simple HTTPGETrequest forurl. 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
HttporRestclass for normal HTTP work. This helper is intended for low-level socket examples or custom HTTP handling.- Parameters:
url- theurlargument (notnull)- Returns:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
checkWriteable
public int checkWriteable(int maxWaitMs)Waits for the connected socket to become writable.maxWaitMs = 0performs 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 value Meaning
1 The socket is connected and currently writable.
0 The socket was not writable before the timeout, or the operation was aborted.
-1 The 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.
- Parameters:
maxWaitMs- themaxWaitMsargument- Returns:
- the result (see
ChilkatObject.getLastMethodSuccess()where the description mentions failure)
-
clearSessionLog
public void clearSessionLog()Clears the accumulated text returned bySessionLogfor this wrapper. It does not changeKeepSessionLogor close the connection. -
clearSslServerCerts
public void clearSslServerCerts()Removes every certificate added byAddSslServerCert.The certificate installed by
InitSslServeris not affected and remains the default for connections whose SNI hostname matches nothing. -
closeConnection
public void closeConnection(int maxWaitMs)Attempts to gracefully terminate and close the current TCP, TLS, or SSH channel connection.maxWaitMscontrols how long the method waits for clean shutdown processing.0waits 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
true. 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,
Closeis routed to the selected member, closes it, and removes it from the set immediately. There is no separate remove-without-closing method. DirectSelectorIndexpositions after the removed member shift down. Duplicated connections: When the connection is shared by objects created throughDupSocket, callingCloseon any wrapper closes the connection for all wrappers. Merely destroying one duplicate without callingClosereleases only that wrapper's reference. Note: After this call,IsConnectedisfalsefor the closed connection. A graceful transport close cannot guarantee that the remote application processed all data sent before the close.(Named
Closein the other Chilkat APIs.)- Parameters:
maxWaitMs- themaxWaitMsargument- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
connect
Establishes a TCP connection tohostname:port. Setssltotrueto perform a TLS handshake after the TCP connection succeeds; set it tofalsefor plain TCP.hostnamemay be a DNS name or a numeric IPv4 or IPv6 address.maxWaitMsis the overall wait budget for DNS resolution performed by this call and establishment of the TCP connection. Its special values are:0waits indefinitely, subject to an internal effective ceiling of approximately six hours.- A positive value below
100milliseconds is treated as100milliseconds. - Negative values have no defined meaning and should not be used.
The later TLS handshake is governed by
MaxReadIdleMsandMaxSendIdleMs, not bymaxWaitMs. 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 phase Timeout
DNS resolution performed by
ConnectmaxWaitMsoverall budgetTCP connection establishment
maxWaitMsTLS handshake
MaxReadIdleMsandMaxSendIdleMsHTTP/SOCKS proxy exchanges Ordinarily the read/write idle timeouts; no separate setting is provided
Reusing the object: A prior call to
Closeis not required. If this object is already connected, listening, or contains leftover state from a failed connection or TLS upgrade,Connectdiscards 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, orSelectorWriteIndexselects 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.
- Parameters:
hostname- thehostnameargument (notnull)port- theportargumentssl- thesslargumentmaxWaitMs- themaxWaitMsargument- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
convertFromSsl
public void 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
falsebecause 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.
- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
convertToSsl
public void 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
ConvertToSslon 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.- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
dnsCacheClear
public void dnsCacheClear()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.
-
dnsLookup
Resolveshostnameand returns one numeric IP address.maxWaitMs = 0waits 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.- Parameters:
hostname- thehostnameargument (notnull)maxWaitMs- themaxWaitMsargument- Returns:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
dupSocket
Populatesdestwith anotherSocketwrapper 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
Closefrom shutting down the connection. TLS state, TLS conversion state, and the internal receive/over-read buffer are shared. A TLS renegotiation,ConvertToSsl, orConvertFromSslthrough 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 result Scope after
DupSocketUnderlying connection, byte stream, TLS session, TLS conversion state, and receive buffer Shared 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.SendBytesPerSecandRcvBytesPerSecShared connection-level measurements. CallingResetPerfthrough one wrapper resets the selected measurement for every duplicate.KeepSessionLog,SessionLog, and session logging Per 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, andReceivedIntPer wrapper. An operation performed through one duplicate does not update these values on another duplicate.Close affects every duplicate: Calling
Closeon 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. CallCloseon any one wrapper only when the shared connection should end for everyone.- Parameters:
dest- thedestargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
getAdaptersAddresses
Populatesjsonwith 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.
- Parameters:
json- thejsonargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
getLastJsonData
Copies additional JSON details from the most recently called method intojson, 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.
- Parameters:
json- thejsonargument (notnull)
-
getMyServerCert
Copies the TLS server certificate configured byInitSslServerintocert. This method is intended for a socket acting as a TLS server and returnsfalsewhen no server certificate has been configured.- Parameters:
cert- thecertargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
getRcvdClientCert
Copies the client certificate at zero-basedindexintocertfrom the TLS handshake of an accepted server-side connection. UseNumReceivedClientCertsto 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.- Parameters:
index- theindexargumentcert- thecertargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
getServerCert
Copies the certificate presented by the remote TLS server intocertfor the current client-side TLS connection. The method returnsfalsewhen 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
RequireSslCertVerifyand/orTlsPinSetwhen validation is required.- Parameters:
cert- thecertargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
getSslAcceptableClientCaDn
Returns the certificate-authority distinguished name at zero-basedindexfrom the list sent by a TLS server when it requests a client certificate. Valid indexes range from0throughNumSslAcceptableClientCAs - 1.- Parameters:
index- theindexargument- Returns:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
initSslServer
Configures this object for server-side TLS usingcertas 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
Ssltotrue. It may also be used on an already connected socket to begin server-side TLS on that live connection.Call order: Do not call
InitSslServerafterBindAndListen. 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 toAddSslAcceptableClientCaDnmust 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.- Parameters:
cert- thecertargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
pollDataAvailable
public boolean pollDataAvailable()Performs a nonblocking check for readable activity on the socket. It returnstruewhen data or another read-ready condition is present andfalsewhen 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.
- Returns:
- the result; this method never throws
ChilkatException
-
receiveBd
Receives one delivery of binary data and appends it tobinData. 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
ReceivePacketSizebytes. -
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, butbinDatamay 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.
- Parameters:
binData- thebinDataargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
For plain TCP, a direct read obtains at most
-
receiveBdN
Receives exactlynumBytesbytes and appends them tobinData. The method continues receiving until the requested count is satisfied or a receive failure occurs. Inactivity is controlled byMaxReadIdleMs.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 tobinData. Those bytes have been consumed from the connection, are included inReceivedCount, 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.
- Parameters:
numBytes- thenumBytesargument (0 .. 4294967295)binData- thebinDataargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
receiveByte
public void receiveByte(boolean bUnsigned)Reads exactly one byte from the connection and stores its numeric value inReceivedInt. IfbUnsignedistrue, the result is in the range0through255; otherwise it is interpreted as a signed two's-complement byte in the range-128through127.The method waits according to
MaxReadIdleMsand returnsfalseon timeout, closure, or another receive failure. On failure,ReceivedIntis 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
ReceivedIntcontains a newly received byte.- Parameters:
bUnsigned- thebUnsignedargument- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
receiveBytesENC
Receives binary data and returns one delivery encoded as text usingencodingAlg. 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
ReceivePacketSizebytes. -
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, andurl_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.
- Parameters:
encodingAlg- theencodingAlgargument (notnull)- Returns:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
For plain TCP, a direct read returns at most
-
receiveBytesToFile
Receives one available block of bytes and appends it to the file named byappendFilename. 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 toMaxReadIdleMs.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
ReceivedCounteven 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.
- Parameters:
appendFilename- theappendFilenameargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
receiveCount
public int receiveCount()Reads exactly four bytes and interprets them as a signed 32-bit two's-complement integer. Byte order is controlled byBigEndian, whose default istruefor network byte order.Negative values are returned unchanged, with one exception:
-1is reserved as the failure result. If the incoming four-byte value is0xFFFFFFFF, the method deliberately reports failure, setsLastMethodFailed, and returns-1. A legitimately transmitted value of-1therefore cannot be received as ordinary data. There is no unsigned variant, so wire values from0x80000000through0xFFFFFFFEare 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 byReceiveCountround-trips every signed 32-bit value except-1.- Returns:
- the result (see
ChilkatObject.getLastMethodSuccess()where the description mentions failure)
-
receiveInt16
public void receiveInt16(boolean bigEndian, boolean bUnsigned)Reads exactly two bytes, interprets them as a two's-complement integer, and stores the result inReceivedInt. SetbigEndiantotruefor network byte order orfalsefor little-endian order. SetbUnsignedtotruefor a value from0through65535; otherwise the result ranges from-32768through32767.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.
ReceivedIntremains unchanged on failure, so use the Boolean return value before reading it.- Parameters:
bigEndian- thebigEndianargumentbUnsigned- thebUnsignedargument- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
receiveInt32
public void receiveInt32(boolean bigEndian)Reads exactly four bytes, interprets them as a signed two's-complement integer, and stores the result inReceivedInt. SetbigEndiantotruefor network byte order orfalsefor 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.
ReceivedIntremains unchanged on failure, so use the Boolean return value before reading it.- Parameters:
bigEndian- thebigEndianargument- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
receiveNBytesENC
Receives exactlynumBytesbytes and returns them encoded usingencodingAlg. Supported encoding names includebase64,modBase64,base32,uu,qp,url,hex,q,b,url_oauth,url_rfc1738,url_rfc2396, andurl_rfc3986. See all supported Chilkat binary encodings. Inactivity is controlled byMaxReadIdleMs.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
ReceiveBytesNandReceiveBdN, 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.
- Parameters:
numBytes- thenumBytesargument (0 .. 4294967295)encodingAlg- theencodingAlgargument (notnull)- Returns:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
receiveSb
Receives text, decodes it usingStringCharset, and appends it tosb. 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
ReceivePacketSizebytes. -
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, butsbmay 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.
- Parameters:
sb- thesbargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
For plain TCP, the underlying direct read obtains at most
-
receiveString
Receives text and decodes it usingStringCharset. 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
ReceivePacketSizebytes. -
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, checkLastMethodFailedwithout 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:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
For plain TCP, the underlying direct read obtains at most
-
receiveStringMaxN
Receives and decodes text likeReceiveString, but returns at mostmaxByteCountinput 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.
- Parameters:
maxByteCount- themaxByteCountargument- Returns:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
receiveStringUntilByte
Receives bytes until the raw byte valuelookForByteis found. The delimiter is excluded from the returned string. The bytes preceding the delimiter are then decoded usingStringCharset.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
0x80with an ASCII-compatible charset such as UTF-8, an ISO-8859 encoding, a Windows-125x encoding, or Shift-JIS.- Parameters:
lookForByte- thelookForByteargument- Returns:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
receiveToCRLF
Receives text through a CRLF line terminator and returns the text including the terminator. Chilkat encodes the CR followed by LF characters usingStringCharset, 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 example0D 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:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
receiveUntilByteBd
Reads bytes untillookForByteis encountered and appends all bytes up to and including the matching byte tobd. The delimiter must be an integer from0through255and 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 tobd. These bytes are included inReceivedCount, 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.
- Parameters:
lookForByte- thelookForByteargumentbd- thebdargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
receiveUntilMatch
Receives bytes until the exact byte sequence represented bymatchStris found. Chilkat first encodesmatchStrusingStringCharset, 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
StringCharsetand returned as text. The returned text includes the matching delimiter.Empty match strings: If
matchStris empty, or if it encodes to zero bytes under the currentStringCharset, the method fails immediately withReceiveFailReason = 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,
ReceiveFailReasonis10.On success, bytes read beyond the delimiter may remain buffered internally for the next receive call. This is why
ReceivedCountcan increase by more than the number of bytes represented by the returned string.- Parameters:
matchStr- thematchStrargument (notnull)- Returns:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
receiveUntilMatchSb
Receives bytes until the exact byte sequence represented bymatchStris found. Chilkat first encodesmatchStrusingStringCharset, 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
StringCharsetand appended tosb. The appended text includes the matching delimiter.Empty match strings: If
matchStris empty, or if it encodes to zero bytes under the currentStringCharset, the method fails immediately withReceiveFailReason = 4. No data is read andsbis 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
falseand does not modifysb. Bytes consumed while searching are included inReceivedCount, are discarded, are not retained for a later receive, and cannot be recovered. If an orderly peer close is detected,ReceiveFailReasonis10.On success, bytes read beyond the delimiter may remain buffered internally for the next receive operation.
- Parameters:
matchStr- thematchStrargument (notnull)sb- thesbargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
resetPerf
public void resetPerf(boolean rcvPerf)Restarts one direction of connection-level transfer-rate measurement. SetrcvPerftotrueto reset receive measurement forRcvBytesPerSec; set it tofalseto reset send measurement forSendBytesPerSec.- Parameters:
rcvPerf- thercvPerfargument
-
selectForReading
public int selectForReading(int timeoutMs)Waits for read-ready activity on this socket or, when this object is a socket set, on any contained socket.timeoutMs = 0performs 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
0or a positive value rather than depend on this behavior.
Return value Meaning
Positive The number of sockets in the read-ready result.
0 No socket was ready at the time of the poll or before the timeout.
-1 An 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
AcceptNextor a receive method as appropriate.Correct socket-set loop: If this method returns
n, iterate from0throughn - 1, assign each value directly toSelectorReadIndex, and then operate on this socket-set object. Do not assign the value toSelectorIndex.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.
- Parameters:
timeoutMs- thetimeoutMsargument- Returns:
- the result (see
ChilkatObject.getLastMethodSuccess()where the description mentions failure)
-
selectForWriting
public int selectForWriting(int timeoutMs)Waits for this socket, or sockets in a socket set, to become writable without blocking.timeoutMs = 0performs 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
0or a positive value rather than depend on this behavior.
Return value Meaning
Positive The number of sockets in the write-ready result.
0 No socket was writable at the time of the poll or before the timeout.
-1 An error occurred.
Correct socket-set loop: If this method returns
n, iterate from0throughn - 1, assign each value directly toSelectorWriteIndex, and then operate on this socket-set object. Do not assign the value toSelectorIndex. 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.- Parameters:
timeoutMs- thetimeoutMsargument- Returns:
- the result (see
ChilkatObject.getLastMethodSuccess()where the description mentions failure)
-
sendBd
Sends bytes frombinData, beginning atoffset. IfnumBytesis greater than0, that many bytes are selected; if it is0, bytes are selected fromoffsetthrough the end. When both values are0, the entireBinDatais selected. The selected range must be valid.The method is synchronous and uses
MaxSendIdleMsas 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.
- Parameters:
binData- thebinDataargument (notnull)offset- theoffsetargument (0 .. 4294967295)numBytes- thenumBytesargument (0 .. 4294967295)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
sendByte
public void sendByte(int value)Sends one byte whose value is specified byvalue. The value must be in the range0through255. The method returns after the byte has been accepted for transmission or a send failure occurs.- Parameters:
value- thevalueargument- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
sendBytesENC
DecodesencodedBytesusingencodingAlg, then sends the resulting binary bytes. Supported Chilkat encoding names includebase64,modBase64,base32,base58,uu,qp,url,hex,q,b,url_oauth,url_rfc1738,url_rfc2396, andurl_rfc3986. See all supported Chilkat binary encodings.For example,
encodedBytes="00010203040506"withencodingAlg="hex"sends seven bytes with values 00 through 06.Important: Malformed encoded input causes the method to fail before or during sending. Check
SendFailReasonandLastErrorText.- Parameters:
encodedBytes- theencodedBytesargument (notnull)encodingAlg- theencodingAlgargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
sendCount
public void sendCount(int byteCount)SendsbyteCountas its four-byte signed two's-complement bit pattern. Byte order is controlled byBigEndian, whose default istruefor network byte order. Any signed 32-bit value is serialized without validation.The peer can read the value using
ReceiveCount, except that-1is not usable as an ordinary count becauseReceiveCountreserves-1as 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.
- Parameters:
byteCount- thebyteCountargument- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
sendInt16
public void sendInt16(int value, boolean bigEndian)Sends the low 16 bits ofvalueas a two-byte two's-complement bit pattern. SetbigEndiantotruefor network byte order orfalsefor little-endian order.No range validation is performed. Signed values from
-32768through32767and unsigned values from0through65535can be represented directly. Any other integer is silently truncated to its low 16 bits, equivalent to taking the value modulo 65536.Examples:
40000writes0x9C40,-1writes0xFFFF,65536writes0x0000, and70000writes0x1170.- Parameters:
value- thevalueargumentbigEndian- thebigEndianargument- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
sendInt32
public void sendInt32(int value, boolean bigEndian)Sendsvalueas its complete four-byte signed two's-complement bit pattern. SetbigEndiantotruefor network byte order orfalsefor 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
-1writes0xFFFFFFFF. Because the input is already 32 bits, no bits are truncated.- Parameters:
value- thevalueargumentbigEndian- thebigEndianargument- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
sendSb
Encodes the contents ofsbusingStringCharsetand sends the resulting bytes. The method is synchronous and usesMaxSendIdleMsas the send-progress inactivity limit.Important: No terminator or length prefix is added. Include any protocol framing in the
StringBuildercontent.- Parameters:
sb- thesbargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
sendString
EncodesstringToSendusingStringCharsetand sends the resulting bytes over the connected TCP or TLS socket. The method is synchronous and usesMaxSendIdleMsas 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.
- Parameters:
stringToSend- thestringToSendargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
sendWakeOnLan
Sends a Wake-on-LAN magic packet formacAddressto the UDP broadcast addressipBroadcastAddrandport. The MAC address is six bytes written as hexadecimal, for example000102030405. Ports7and9are 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.
- Parameters:
macAddress- themacAddressargument (notnull)port- theportargumentipBroadcastAddr- theipBroadcastAddrargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
sendWakeOnLan2
Sends the same Wake-on-LAN magic packet asSendWakeOnLanand appends a SecureOn password.passwordis 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.
- Parameters:
macAddress- themacAddressargument (notnull)port- theportargumentipBroadcastAddr- theipBroadcastAddrargument (notnull)password- thepasswordargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
setSslClientCert
Configurescertas 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
ConnectorConvertToSsl. A certificate without its private key cannot prove client identity.- Parameters:
cert- thecertargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
setSslClientCertPem
Loads and configures a TLS client certificate and private key from PEM data or a PEM filename supplied inpemDataOrFilename. UsepemPasswordwhen 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.
- Parameters:
pemDataOrFilename- thepemDataOrFilenameargument (notnull)pemPassword- thepemPasswordargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
setSslClientCertPfx
Loads and configures a TLS client certificate and private key from the PFX/P12 filepfxFilename, usingpfxPassword. Use this only when the server requests or requires client-certificate authentication.Important: Protect PFX files and passwords because they contain private-key material.
- Parameters:
pfxFilename- thepfxFilenameargument (notnull)pfxPassword- thepfxPasswordargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
setTlsTicketKey
Sets the key this TLS server uses to encrypt and decrypt session tickets.binKeymust contain exactly 32 bytes.This is only needed so that tickets issued by one server process remain valid in another process, or after a restart. A random key is generated automatically otherwise, which makes session resumption work for the life of one listener with no configuration at all. Every server instance that should accept one another's tickets must be given the same key.
Calling this method a second time with a different key rotates the key: new tickets are issued under the new key, and tickets issued under the key it replaces are still accepted until they expire. Calling it with the key already in use does nothing, so re-reading an unchanged configuration is harmless.
Protect this key: It encrypts the resumption secret of every session whose ticket it issued. Anyone holding it can decrypt those tickets. Store it as securely as a private key, and rotate it periodically.
Set
TlsTicketLifetimeSecondsto0to issue no tickets at all.Returns
truefor success,falsefor failure.- Parameters:
binKey- thebinKeyargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
sleepMs
public void sleepMs(int millisec)Pauses the calling thread for approximatelymillisecmilliseconds. 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.
- Parameters:
millisec- themillisecargument
-
sshAuthenticatePk
Authenticates the SSH tunnel session assshLoginusingprivateKey. CallSshOpenTunnelfirst. 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.
- Parameters:
sshLogin- thesshLoginargument (notnull)privateKey- theprivateKeyargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
sshAuthenticatePw
Authenticates the SSH tunnel session usingsshLoginandsshPassword. CallSshOpenTunnelfirst and authenticate before opening forwarded channels.Important: Do not log or expose the SSH password. Public-key authentication is generally preferable when supported.
- Parameters:
sshLogin- thesshLoginargument (notnull)sshPassword- thesshPasswordargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
sshCloseTunnel
public void sshCloseTunnel()Closes the SSH tunnel opened bySshOpenTunneland terminates its forwarded channels. It does not close unrelated SSH objects or connections.- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
sshNewChannel
Opens a new port-forwarded channel through the authenticated SSH tunnel tohostname:portand populateschannelwith the connected socket. Ifsslistrue, Chilkat establishes TLS to the destination inside the SSH tunnel.maxWaitMs = 0waits indefinitely for the channel/destination connection to open.- A positive value is used as supplied; unlike
Connect, values below100milliseconds 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
SshOpenTunneland authenticate successfully before opening channels.- Parameters:
hostname- thehostnameargument (notnull)port- theportargumentssl- thesslargumentmaxWaitMs- themaxWaitMsargumentchannel- thechannelargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
sshOpenTunnel
Connects to the SSH server atsshHostname:sshPortand initializes an SSH tunneling session. Port22is conventional but not required.After this succeeds, authenticate with
SshAuthenticatePworSshAuthenticatePk, then open forwarded destination channels withSshNewChannel. 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
MaxReadIdleMsandMaxSendIdleMs. The default value of0for those properties permits an indefinite wait while no progress is made.- Parameters:
sshHostname- thesshHostnameargument (notnull)sshPort- thesshPortargument- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
startTiming
public void startTiming()Starts or restarts the object's convenience timer. ReadElapsedSecondsto obtain the whole number of seconds since this call.Note: This timer does not affect connection, send, or receive timeouts.
-
takeConnection
Moves the active connection fromcSocketinto this object. This object first releases its reference to any connection it previously held. UnlikeTakeSocket, this method does not add a member to a socket set.After success,
cSocketholds 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
DupSocketonly when two wrappers must refer to the same underlying connection.- Parameters:
sock- thesockargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
takeSocket
Moves the connection out ofsockand 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,
sockholds 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
SelectorIndexto select a direct member. AfterSelectForReadingorSelectForWriting, assign the ready position directly toSelectorReadIndexorSelectorWriteIndex. Different from TakeConnection:TakeSocketadds a new member to the socket set.TakeConnectionmoves 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.- Parameters:
sock- thesockargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
tlsRenegotiate
public void tlsRenegotiate()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.
- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
useSsh
Configures this socket to route subsequentConnectcalls through the already connected and authenticatedSshobject. The destination host and port passed toConnectare 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/SshNewChannelworkflow and the separateSshTunnelclass for background static or dynamic forwarding.Important: The supplied
Sshobject must remain connected and authenticated while the forwarded socket connection is being established and used.- Parameters:
ssh- thesshargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
setProgressListener
Installs the listener that receives this object's progress events (abortCheck,percentDone,progressInfo) during its long-running methods; replaces any listener or lambda installed before;nullremoves it.- Parameters:
listener- the listener, ornull- Throws:
IllegalStateException- if called from inside one of this object's own callbacks
-
getProgressListener
Returns the installed listener, ornull.- Returns:
- the listener installed with
setProgressListener(ProgressListener)or one of theon...methods
-
onAbortCheck
Installs a listener whose only callback isabortCheck: called everyHeartbeatMsmilliseconds during a long-running method; returntrueto abort it. Replaces any listener installed before.- Parameters:
callback- the callback, ornullto remove the listener
-
onPercentDone
Installs a listener whose only callback ispercentDone: called with the completion percentage (0..100) as a long-running method progresses; returntrueto abort it. Replaces any listener installed before.- Parameters:
callback- the callback, ornullto remove the listener
-
onProgressInfo
Installs a listener whose only callback isprogressInfo: called with a name/value pair of progress information as a long-running method proceeds. Replaces any listener installed before.- Parameters:
callback- the callback, ornullto remove the listener
-