2015-03-16 4 views
0

Я создаю сокет-клиент с использованием asyncsocket, и я могу получить соединение и данные на сервере, но я не могу получить данные на конце клиента, а это значит, что метод onSocket: didReadData не был называется.ios asyncsocket не может вызвать метод readdata

-(void) connectToServer 
{ 
    NSError *err; 
    [self.sock connectToHost:[[NSUserDefaults standardUserDefaults] objectForKey:@"ip"] onPort:[[[NSUserDefaults standardUserDefaults] valueForKey:@"port"] intValue] error:&err]; 
} 
-(void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port 
{ 
    NSLog(@"connect to host"); 
    NSData *sockdata = [@"test data\r\n" dataUsingEncoding: NSUTF8StringEncoding]; 
    [self.sock writeData:sockdata withTimeout:-1 tag:1]; 
} 
-(void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag 
{ 
    NSLog(@"write data finish");//this works good 
    [sock readDataToData:nil withTimeout:100 tag:1]; 
} 
-(void) onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag//this cannot get called 
{ 
    NSLog(@"read data !"); 
} 
+0

Сервер посылал какие-либо данные вашему клиенту? Вы реализуете метод в своем протоколе '- (void) onSocket: (AsyncSocket *) sock willDisconnectWithError: (NSError *) err;' и получить какую-либо ошибку? – KudoCC

+0

нет, ошибки не найдено, и проблема найдена. Я заменю [sock readDataToData: nil withTimeout: 100 tag: 1] с помощью [sock readDataToData: [AsyncSocket CRLFData] withTimeout: 100 tag: 1], и теперь я могу прочитатьData. – FisherMartyn

ответ

0

Неисправность. заменяю:

[sock readDataToData:nil withTimeout:100 tag:1]; 

с

[sock readDataToData:[AsyncSocket CRLFData] withTimeout:100 tag:1]; 

и теперь я могу читать правильные данные.

Смежные вопросы