![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) Asynchronous SSL Client (Deprecated) ExampleNotice: The functionality described here is deprecated and replaced by a newer model for asynchronous method calls. The newer model was introduced in Chilkat v9.5.0.52, and is identified by methods having names ending in “Async” which return a task object. Demonstrates how to connect to an SSL server, send a simple message, receive a simple response, and disconnect. This example uses the asynchronous methods to connect, send, and receive.
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @iTmp0 int -- Important: Do not use nvarchar(max). See the warning about using nvarchar(max). DECLARE @sTmp0 nvarchar(4000) -- Notice: The functionality described here is deprecated and replaced -- by a newer model for asynchronous method calls. The newer model was -- introduced in Chilkat v9.5.0.52, and is identified by methods -- having names ending in “Async” which return a task object. DECLARE @socket int -- Use "Chilkat_9_5_0.Socket" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Socket', @socket OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END DECLARE @ssl int SELECT @ssl = 1 DECLARE @maxWaitMillisec int SELECT @maxWaitMillisec = 20000 -- The SSL server hostname may be an IP address, a domain name, -- or "localhost". You'll need to change this: DECLARE @sslServerHost nvarchar(4000) SELECT @sslServerHost = '123.123.88.88' DECLARE @sslServerPort int SELECT @sslServerPort = 8123 -- Connect to the SSL server asynchronously in a background thread. DECLARE @success int EXEC sp_OAMethod @socket, 'AsyncConnectStart', @success OUT, @sslServerHost, @sslServerPort, @ssl, @maxWaitMillisec IF @success <> 1 BEGIN EXEC sp_OAGetProperty @socket, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @socket RETURN END -- Wait for the socket to become connected... EXEC sp_OAGetProperty @socket, 'AsyncConnectFinished', @iTmp0 OUT WHILE (@iTmp0 <> 1) BEGIN -- Sleep 1 second. EXEC sp_OAMethod @socket, 'SleepMs', NULL, 1000 END -- Did the connect fail? EXEC sp_OAGetProperty @socket, 'AsyncConnectSuccess', @iTmp0 OUT IF @iTmp0 <> 1 BEGIN EXEC sp_OAGetProperty @socket, 'AsyncConnectLog', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @socket RETURN END -- Set maximum timeouts for reading an writing (in millisec) EXEC sp_OASetProperty @socket, 'MaxReadIdleMs', 20000 EXEC sp_OASetProperty @socket, 'MaxSendIdleMs', 20000 -- Send a "Hello Server! -EOM-" message: EXEC sp_OAMethod @socket, 'AsyncSendString', @success OUT, 'Hello Server! -EOM-' IF @success <> 1 BEGIN EXEC sp_OAGetProperty @socket, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @socket RETURN END -- Wait for the send to finish EXEC sp_OAGetProperty @socket, 'AsyncSendFinished', @iTmp0 OUT WHILE (@iTmp0 <> 1) BEGIN -- Sleep 1 second. EXEC sp_OAMethod @socket, 'SleepMs', NULL, 1000 END -- Did the send fail? EXEC sp_OAGetProperty @socket, 'AsyncSendSuccess', @iTmp0 OUT IF @iTmp0 <> 1 BEGIN EXEC sp_OAGetProperty @socket, 'AsyncSendLog', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @socket RETURN END -- The server (in this example) is going to send a "Hello Client! -EOM-" -- message. Begin reading asynchronously in a background thread: EXEC sp_OAMethod @socket, 'AsyncReceiveUntilMatch', @success OUT, '-EOM-' IF @success <> 1 BEGIN EXEC sp_OAGetProperty @socket, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @socket RETURN END -- Wait for the background read to finish EXEC sp_OAGetProperty @socket, 'AsyncReceiveFinished', @iTmp0 OUT WHILE (@iTmp0 <> 1) BEGIN -- Sleep 1 second. EXEC sp_OAMethod @socket, 'SleepMs', NULL, 1000 END -- Did the receive fail? EXEC sp_OAGetProperty @socket, 'AsyncReceiveSuccess', @iTmp0 OUT IF @iTmp0 <> 1 BEGIN EXEC sp_OAGetProperty @socket, 'AsyncReceiveLog', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @socket RETURN END -- Display the received message: EXEC sp_OAGetProperty @socket, 'AsyncReceivedString', @sTmp0 OUT PRINT @sTmp0 -- Close the connection with the server -- Wait a max of 20 seconds (20000 millsec) EXEC sp_OAMethod @socket, 'Close', @success OUT, 20000 EXEC @hr = sp_OADestroy @socket END GO |
||||
© 2000-2026 Chilkat Software, Inc. All Rights Reserved.