Sample code for 30+ languages & platforms
PureBasic

TCP Socket Send Byte and Receive Byte

Demonstrates the Chilkat Socket ReceiveByte and SendByte method.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkSocket.pb"

Procedure ChilkatExample()

    success.i = 0

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

    sock.i = CkSocket::ckCreate()
    If sock.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

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

    useTls.i = 0
    port.i = 4242
    maxWaitMs.i = 5000
    success = CkSocket::ckConnect(sock,"tcpbin.com",port,useTls,maxWaitMs)
    If success = 0
        Debug CkSocket::ckLastErrorText(sock)
        CkSocket::ckDispose(sock)
        ProcedureReturn
    EndIf

    ; Wait a max of 2 seconds for a response..
    CkSocket::setCkMaxReadIdleMs(sock, 2000)

    ; Send a byte.
    CkSocket::ckSendByte(sock,96)

    ; The tcpbin.com echo server only echoes after receiving an LF (linefeed char)
    CkSocket::ckSendByte(sock,10)

    ; The echo server will echo back whatever is sent to it.
    ; We should be able to read the same byte back..
    ; After successfully reading, the byte value is available in the ReceivedInt property.
    treatAsUnsignedInt.i = 1
    success = CkSocket::ckReceiveByte(sock,treatAsUnsignedInt)
    If success = 0
        Debug CkSocket::ckLastErrorText(sock)
        CkSocket::ckDispose(sock)
        ProcedureReturn
    EndIf

    ; Let's look at the value of the byte received.  It should be 96.
    Debug Str(CkSocket::ckReceivedInt(sock))

    ; The echo server also echoed the LF back.
    success = CkSocket::ckReceiveByte(sock,treatAsUnsignedInt)
    ; Assuming success..

    ; Should be decimal 10.
    Debug Str(CkSocket::ckReceivedInt(sock))


    CkSocket::ckDispose(sock)


    ProcedureReturn
EndProcedure