GCDAsyncSockets,得到答案

时间:2013-05-21 11:06:19

标签: ios objective-c gcdasyncsocket

我正在尝试使用GCDAsyncSocket测试服务器连接。

https://github.com/robbiehanson/CocoaAsyncSocket

我想连接到ip +端口并获取一条消息,无论它是否有效。

我现在到目前为止。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{     //在应用程序启动后覆盖自定义点。

dispatch_queue_t mainQueue = dispatch_get_main_queue();

asyncSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:mainQueue];


    NSString *host = @"www.google.de";
    uint16_t port = 21;

    NSError *error = nil;

    if(![asyncSocket connectToHost:host onPort:port error:&error])
    {
        NSLog(@"ERROR %@!!!", error);
    }
    else{
        NSLog(@"NO ERROR %@!!!", error);
    }

    [asyncSocket writeData:@"DATA" withTimeout:3 tag:0];

return YES;

}

但我如何检查数据是否已写入?

if(![asyncSocket connectToHost:host onPort:port error:& error])

总是让我没有错误。

1 个答案:

答案 0 :(得分:0)

您必须实施socket:didWriteDataWithTag:委托方法。 来自“GCDAsyncSocket.h”:

/**
 * Called when a socket has completed writing the requested data. Not called if there is an error.
**/
- (void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:(long)tag;

如果写入超时,则关闭连接并使用委托方法

- (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err;

被召唤。