Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios GCDAsyncSockets,获取答案_Ios_Objective C_Gcdasyncsocket - Fatal编程技术网

Ios GCDAsyncSockets,获取答案

Ios GCDAsyncSockets,获取答案,ios,objective-c,gcdasyncsocket,Ios,Objective C,Gcdasyncsocket,我正在尝试使用GCDAsyncSocket测试服务器连接 我想连接到ip+端口并获取消息,无论它是否工作 我现在已经走得很远了 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //应用程序启动后自定义的覆盖点 dispatch_queue_t mainQueue = dispatch_get_main_queue();

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

我想连接到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错误:&错误])


始终给我一个无错误。

您必须实现
套接字:didWriteDataWithTag:
委托方法。 从“GCDAsyncSocket.h”开始:

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

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

已致电。

谢谢您的回复。如果我在AppDelegate.m中实现这些方法,我如何调用该方法?我从未使用过委托方法。Greets@shizophren:另一种方法是:GCDAsyncSocket库调用您的委托方法。您能更清楚一点吗?我应该在哪里实现该方法?我必须自己调用它,还是由GCDAsyncSocket库自动完成?我只想知道-成功与否。@shizophren:你必须实现委托方法。如果您使用
初始化套接字。。。initWithDelegate:自我socket:didWriteDataWithTag:
在写入成功时被调用,而
socketDidDisconnect:withError
在写入失败时被调用。好的,这对我来说更清楚了:-)因此我实现了这两种方法。他们应该给我寄一份NSLog邮件。socketDidDisconnect似乎起作用,而didWriteDataWithTag则不起作用。两者都只有一个NSLog语句。有什么线索吗(void)socket:(GCDAsyncSocket*)sock didWriteDataWithTag:(long)tag{NSLog(@“didWriteDataWithTag已成功%lu”,tag);}-(void)socketDidDisconnect:(GCDAsyncSocket*)sock withError:(NSError*)err{NSLog(@“连接错误%@”,err);}
- (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err;