-1

我正在尝试使用 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])

总是让我没有错误。

4

1 回答 1

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;

叫做。

于 2013-05-21T11:51:51.833 回答