GCDソケットを利用してTCPクライアントの構築を行う際、最も基本な設定をメモしておきます。
1、Githubより、CocoaAsyncSocketをダウンロードしておきます。
2、GCDAsyncSocket.h、GCDAsyncSocket.mをxcodeプロジェクトに取りこみます。
3、ターゲットviewcontollerにヘッダファイルをインポートして、宣言しておきます。
#import "GCDAsyncSocket.h" @interface ViewController (){ GCDAsyncSocket *asyncSocket; }
4、ソケットを初期化して、接続を行います。
asyncSocket=[[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()]; NSError *error = nil; uint16_t portno = [[[self port] text] intValue]; if (![asyncSocket connectToHost:[ipaddress text] onPort: portno error:&error]){...} else{...} }
5、ソケットからデータを取り込みます。
[asyncSocket readDataWithTimeout:-1.0 tag:0];
6、ソケットへデータを書きこみます。
[asyncSocket writeData:requestData withTimeout:-1 tag:0];
withTimeout:-1 は、ライムアウトなしと意味します。
7、ソケットイベントハンドラもいくつか取りこみます。
- (void)socket:(GCDAsyncSocket *)sock didConnectToHost: (NSString *)host port:(UInt16)portno {...} - (void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag: (long)tag {...} - (void)socket:(GCDAsyncSocket *)sock didReadData: (NSData *)data withTag:(long)tag{...} - (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err {...}
以上