Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) Socket Send/Receive 16-bit IntegersDemonstrates sending and receiving 16-bit integers over a socket connection using either big-endian or little-endian byte ordering.
IncludeFile "CkSocket.pb" Procedure ChilkatExample() ; 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.i = 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 16-bit integer using big-endian byte ordering (also called network byte order) ; 12022 decimal = 2EF6 hex value.i = 12022 bigEndian.i = 1 CkSocket::ckSendInt16(sock,value,bigEndian) ; Send it again, because we'll read it two different ways.. CkSocket::ckSendInt16(sock,value,bigEndian) ; The tcpbin.com echo server only echoes after receiving an LF (linefeed char) CkSocket::ckSendByte(sock,10) ; Let's see hex values of the 2 bytes sent in network byte order (big-endian) ; (The echo server sends back exactly the bytes received.) hexStr.s = CkSocket::ckReceiveNBytesENC(sock,2,"hex") ; In the big-ending byte order, the byte order is most significant byte to least significant, ; therefore we should see the bytes in the order 0x2E 0xF6. Debug "Expecting big-endian 2EF6" Debug hexStr ; Let's read directly to an integer.. success = CkSocket::ckReceiveInt16(sock,bigEndian,1) Debug "Expecting 12022" Debug "Received: " + Str(CkSocket::ckReceivedInt(sock)) ; Consume the LF that gets echoed back.. CkSocket::ckReceiveByte(sock,1) ; -------------------------------------------------------------------- ; Let's do the same thing, but with little-endian byte ordering. Debug "----" ; 12022 decimal = 2EF6 hex, but little-endian byte ordering will send the bytes in the order 0xF6 0x2E value = 12022 bigEndian = 0 CkSocket::ckSendInt16(sock,value,bigEndian) CkSocket::ckSendInt16(sock,value,bigEndian) CkSocket::ckSendByte(sock,10) hexStr = CkSocket::ckReceiveNBytesENC(sock,2,"hex") Debug "Expecting little-endian F62E" Debug hexStr success = CkSocket::ckReceiveInt16(sock,bigEndian,1) Debug "Expecting 12022" Debug "Received: " + Str(CkSocket::ckReceivedInt(sock)) ; Consume the LF that gets echoed back.. CkSocket::ckReceiveByte(sock,1) CkSocket::ckClose(sock,1000) ; Output: ; Expecting big-endian 2EF6 ; 2EF6 ; Expecting 12022 ; Received: 12022 ; ---- ; Expecting little-endian F62E ; F62E ; Expecting 12022 ; Received: 12022 CkSocket::ckDispose(sock) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.