Sample code for 30+ languages & platforms
Swift

Socket Send and Receive BinData

Demonstrates the Chilkat Socket ReceiveBdN and SendBd methods.

Chilkat Swift Downloads

Swift

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

}