Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi ActiveX) Socket Send and Receive BinDataDemonstrates the Chilkat Socket ReceiveBdN and SendBd methods.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB; ... procedure TForm1.Button1Click(Sender: TObject); var sock: TChilkatSocket; useTls: Integer; port: Integer; maxWaitMs: Integer; success: Integer; bdToSend: TChilkatBinData; i: Integer; byteVal: Integer; bdRecv: TChilkatBinData; begin // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. sock := TChilkatSocket.Create(Self); // -------------------------------------------------------------------- // This example uses the public TCP echo service at https://tcpbin.com/ // -------------------------------------------------------------------- useTls := 0; port := 4242; maxWaitMs := 5000; success := sock.Connect('tcpbin.com',port,useTls,maxWaitMs); if (success = 0) then begin Memo1.Lines.Add(sock.LastErrorText); Exit; end; // Wait a max of 2 seconds for a response.. sock.MaxReadIdleMs := 2000; // Send 26 bytes contained in a Chilkat BinData bdToSend := TChilkatBinData.Create(Self); i := 0; byteVal := 65; while i < 26 do begin bdToSend.AppendByte(byteVal); byteVal := byteVal + 1; i := i + 1; end; // Send the contents of the BinData // Pass zero's in the 2nd and 3rd arguments to send the entire contents of the BinData. sock.SendBd(bdToSend.ControlInterface,0,0); // The tcpbin.com echo server only echoes after receiving an LF (linefeed char) sock.SendByte(10); // The echo server will echo back whatever is sent to it. // We should be able to read the same bytes back.. bdRecv := TChilkatBinData.Create(Self); // Receive the 26 bytes previously sent, plus the LF char. success := sock.ReceiveBdN(27,bdRecv.ControlInterface); if (success = 0) then begin Memo1.Lines.Add(sock.LastErrorText); Exit; end; // Show the contents of bdRecv in hex format Memo1.Lines.Add(bdRecv.GetEncoded('hex')); // Output: 4142434445464748494A4B4C4D4E4F505152535455565758595A0A end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.