AsyncSocket:始终侦听传入的TCP消息

AsyncSocket:始终侦听传入的TCP消息,tcp,cocoaasyncsocket,Tcp,Cocoaasyncsocket,我想有一个服务,通过TCP连接到服务器,然后不断听取传入的数据。我正在使用我正在以以下方式使用的: self.socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()]; NSError *err = nil; if (![self.socket connectToHost:@"..." onPort:... error:&err]) { retur

我想有一个服务,通过TCP连接到服务器,然后不断听取传入的数据。我正在使用我正在以以下方式使用的:

self.socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
NSError *err = nil;
if (![self.socket connectToHost:@"..." onPort:... error:&err]) {
    return;
}

[self.socket readDataWithTimeout:-1 tag:1];
然后在reading delegate方法中:

- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag {
    NSLog(@"%@", data);
    [self.socket readDataWithTimeout:-1 tag:1];
}

我立即再次调用
readDataWithTimout:tag:
是否正确?或者有没有(更好的)方法来始终收听传入的消息?

对于您正在做的事情,这很好。你需要打电话 -[readDataWithTimeout]位于-didReadData中,因为否则您只会收到来自服务器的第一条消息。GCDAsyncSocket就是这样设计的,因为您可以通过其他几种方式接收传入数据