PowerBuilder
PowerBuilder
Socket Send and Receive BinData
Demonstrates the Chilkat Socket ReceiveBdN and SendBd methods.Chilkat PowerBuilder Downloads
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