ios asyncsocket 无法调用 readdata 方法
ios asyncsocket cannot call readdata method
我用asyncsocket创建了一个socket客户端,可以在服务器端获取到连接和数据,但是在客户端无法获取到数据,这说明没有调用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 !");
}
发现问题。
我替换:
[sock readDataToData:nil withTimeout:100 tag:1];
和
[sock readDataToData:[AsyncSocket CRLFData] withTimeout:100 tag:1];
现在我可以读取正确的数据了。
我用asyncsocket创建了一个socket客户端,可以在服务器端获取到连接和数据,但是在客户端无法获取到数据,这说明没有调用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 !");
}
发现问题。 我替换:
[sock readDataToData:nil withTimeout:100 tag:1];
和
[sock readDataToData:[AsyncSocket CRLFData] withTimeout:100 tag:1];
现在我可以读取正确的数据了。