ios asyncsocket无法调用readdata方法

时间:2015-03-16 02:33:07

标签: ios objective-c asyncsocket

我使用asyncsocket创建一个套接字客户端,我可以获取服务器中的连接和数据,但我无法在客户端获取数据,这意味着尚未调用onSocket:didReadData方法。

-(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 !");
}

1 个答案:

答案 0 :(得分:0)

发现问题。 我替换:

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

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

现在我可以阅读正确的数据。