我有以下功能:
if (socket==nil)
socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
if (elBuffer==nil)
elBuffer = [[NSMutableData alloc] init];
}
if ([socket isDisconnected]) {
NSError *err = nil;
[socket connectToHost:elControlador.ip onPort:9761 error:&err]
}
[socket writeData:@"A01" withTimeout:30 tag:1];
[socket writeData:@"A02" withTimeout:30 tag:1];
[socket writeData:@"A03" withTimeout:30 tag:1];
[socket writeData:@"A04" withTimeout:30 tag:1];
[socket writeData:@"A05" withTimeout:30 tag:1];
[socket readDataWithTimeout:30 buffer:elBuffer bufferOffset:0 maxLength:-1 tag:1];
它完美地工作,除了套接字服务器在写入之间需要一秒左右才能工作。我想知道是否有人遇到同样的问题,并且可以阐明如何实现这一目标。感谢。
答案 0 :(得分:1)
如果您希望客户端在写这些字符串之间等待:
NSTimer
答案 1 :(得分:1)
我能够使用以下内容实现此目的:
int i=0;
for(id aItem in aIDs) {
NSString *directCommand = [NSString stringWithFormat:@"A%@",aItem];
[self performSelector:@selector(fSend:) withObject:directCommand afterDelay:(2.0*i)];
i++;
}
[socket readDataWithTimeout:30 buffer:elBuffer bufferOffset:0 maxLength:-1 tag:1];
-(void)fSend : (NSString *)aCommand {
[socket writeData:aCommand withTimeout:30 tag:1];
}
这使我在执行writeData之间有2秒的时间,而不必冻结应用程序,也不会使我的设备充满写入。