Swift
Swift
Socket Send and Receive BinData
Demonstrates the Chilkat Socket ReceiveBdN and SendBd methods.Chilkat Swift Downloads
func chilkatTest() {
var success: Bool = false
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
let sock = CkoSocket()!
// --------------------------------------------------------------------
// This example uses the public TCP echo service at https://tcpbin.com/
// --------------------------------------------------------------------
var useTls: Bool = false
var port: Int = 4242
var maxWaitMs: Int = 5000
success = sock.connect(hostname: "tcpbin.com", port: port, ssl: useTls, maxWaitMs: maxWaitMs)
if success == false {
print("\(sock.lastErrorText!)")
return
}
// Wait a max of 2 seconds for a response..
sock.maxReadIdleMs = 2000
// Send 26 bytes contained in a Chilkat BinData
let bdToSend = CkoBinData()!
var i: Int = 0
var byteVal: Int = 65
while i < 26 {
bdToSend.appendByte(byteValue: byteVal)
byteVal = byteVal + 1
i = i + 1
}
// 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(binData: bdToSend, offset: 0, numBytes: 0)
// The tcpbin.com echo server only echoes after receiving an LF (linefeed char)
sock.sendByte(value: 10)
// The echo server will echo back whatever is sent to it.
// We should be able to read the same bytes back..
let bdRecv = CkoBinData()!
// Receive the 26 bytes previously sent, plus the LF char.
success = sock.receiveBdN(numBytes: 27, binData: bdRecv)
if success == false {
print("\(sock.lastErrorText!)")
return
}
// Show the contents of bdRecv in hex format
print("\(bdRecv.getEncoded(encoding: "hex")!)")
// Output: 4142434445464748494A4B4C4D4E4F505152535455565758595A0A
}