Ios GCDAsyncSockets,获取答案
我正在尝试使用GCDAsyncSocket测试服务器连接 我想连接到ip+端口并获取消息,无论它是否工作 我现在已经走得很远了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();
- (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:自我在AppDelegate.m中,则此AppDelegate是套接字的委托。因此,可以在同一AppDelegate类中实现委托方法。GCDAsyncSocket库将调用委托方法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;