Objective-C 用の TCP/IP 通信ライブラリを見つけたとき、GCDAsyncSocket を使用するように勧められました。疲れました。GCDAsyncSocket を使用して TCP 接続を確立し、パケットを送信できます。
しかし、私のプロジェクトにはプロセスのリストがあります。接続が確立されるのを待ってから、IP パケット 1 を送信し、応答データを読み取り、IP パケット 2 を送信し、応答データを読み取ります...次のコードのように:
[self establishGCDAsyncSocketTCPConnection];
if ([self handshake1]) {
NSLog(@"handshake 1 is DONE! ");
} else {
NSLog(@"handshake 1 is FAIL! *");
return NO;
}
if ([self handshake2]) {
NSLog(@"handshake 2 is DONE! ");
} else {
NSLog(@"handshake 2 is FAIL! *");
return NO;
}
IPデリゲート関数が何かを返すのを待つ必要があります。
- (void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
{
NSLog(@"socket:didConnectToHost:%@ port:%d", host, port);
tcpConnectionFlag = YES;
}
- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
{
//return me something.
}
質問:
スレッドが GCDAsyncSocket 応答を待機するようにするにはどうすればよいですか? または他の解決策はありますか?GCDAsyncSocket または AsyncSocket を別のものに置き換えますか?