Sample code for 30+ languages & platforms
PowerBuilder

Socket Send and Receive BinData

Demonstrates the Chilkat Socket ReceiveBdN and SendBd methods.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Sock
integer li_UseTls
integer li_Port
integer li_MaxWaitMs
oleobject loo_BdToSend
integer i
integer li_ByteVal
oleobject loo_BdRecv

li_Success = 0

// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

loo_Sock = create oleobject
li_rc = loo_Sock.ConnectToNewObject("Chilkat.Socket")
if li_rc < 0 then
    destroy loo_Sock
    MessageBox("Error","Connecting to COM object failed")
    return
end if

// --------------------------------------------------------------------
// This example uses the public TCP echo service at https://tcpbin.com/
// --------------------------------------------------------------------

li_UseTls = 0
li_Port = 4242
li_MaxWaitMs = 5000
li_Success = loo_Sock.Connect("tcpbin.com",li_Port,li_UseTls,li_MaxWaitMs)
if li_Success = 0 then
    Write-Debug loo_Sock.LastErrorText
    destroy loo_Sock
    return
end if

// Wait a max of 2 seconds for a response..
loo_Sock.MaxReadIdleMs = 2000

// Send 26 bytes contained in a Chilkat BinData
loo_BdToSend = create oleobject
li_rc = loo_BdToSend.ConnectToNewObject("Chilkat.BinData")

i = 0
li_ByteVal = 65
do while i < 26
    loo_BdToSend.AppendByte(li_ByteVal)
    li_ByteVal = li_ByteVal + 1
    i = i + 1
loop
// Send the contents of the BinData
// Pass zero's in the 2nd and 3rd arguments to send the entire contents of the BinData.
loo_Sock.SendBd(loo_BdToSend,0,0)

// The tcpbin.com echo server only echoes after receiving an LF (linefeed char)
loo_Sock.SendByte(10)

// The echo server will echo back whatever is sent to it.
// We should be able to read the same bytes back..
loo_BdRecv = create oleobject
li_rc = loo_BdRecv.ConnectToNewObject("Chilkat.BinData")

// Receive the 26 bytes previously sent, plus the LF char.
li_Success = loo_Sock.ReceiveBdN(27,loo_BdRecv)
if li_Success = 0 then
    Write-Debug loo_Sock.LastErrorText
    destroy loo_Sock
    destroy loo_BdToSend
    destroy loo_BdRecv
    return
end if

// Show the contents of bdRecv in hex format
Write-Debug loo_BdRecv.GetEncoded("hex")

// Output:  4142434445464748494A4B4C4D4E4F505152535455565758595A0A


destroy loo_Sock
destroy loo_BdToSend
destroy loo_BdRecv