Objective-C
Objective-C
Socket Send and Receive BinData
Demonstrates the Chilkat Socket ReceiveBdN and SendBd methods.Chilkat Objective-C Downloads
#import <CkoSocket.h>
#import <CkoBinData.h>
BOOL success = NO;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
CkoSocket *sock = [[CkoSocket alloc] init];
// --------------------------------------------------------------------
// This example uses the public TCP echo service at https://tcpbin.com/
// --------------------------------------------------------------------
BOOL useTls = NO;
int port = 4242;
int maxWaitMs = 5000;
success = [sock Connect: @"tcpbin.com" port: [NSNumber numberWithInt: port] ssl: useTls maxWaitMs: [NSNumber numberWithInt: maxWaitMs]];
if (success == NO) {
NSLog(@"%@",sock.LastErrorText);
return;
}
// Wait a max of 2 seconds for a response..
sock.MaxReadIdleMs = [NSNumber numberWithInt:2000];
// Send 26 bytes contained in a Chilkat BinData
CkoBinData *bdToSend = [[CkoBinData alloc] init];
int i = 0;
int byteVal = 65;
while (i < 26) {
[bdToSend AppendByte: [NSNumber numberWithInt: 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: bdToSend offset: 0 numBytes: 0];
// The tcpbin.com echo server only echoes after receiving an LF (linefeed char)
[sock SendByte: [NSNumber numberWithInt: 10]];
// The echo server will echo back whatever is sent to it.
// We should be able to read the same bytes back..
CkoBinData *bdRecv = [[CkoBinData alloc] init];
// Receive the 26 bytes previously sent, plus the LF char.
success = [sock ReceiveBdN: 27 binData: bdRecv];
if (success == NO) {
NSLog(@"%@",sock.LastErrorText);
return;
}
// Show the contents of bdRecv in hex format
NSLog(@"%@",[bdRecv GetEncoded: @"hex"]);
// Output: 4142434445464748494A4B4C4D4E4F505152535455565758595A0A