大家好,我遇到一个头痛的问题,我写的TCP异步客户端一直接收不到数据,请大大们指教。
我们的服务端,是用C#写的,TCP是长链接,始终用同一个链接发送和接收数据,服务端用别的程序测试是没问题的。
以下是我的代码:
self.outSocket =[[AsyncSocket alloc]init];
self.outSocket.delegate =self ;
if(![self.outSocket connectToHost:@"192.168.43.30" onPort:5220 error:&err])
{
NSLog(@"Error: %@", err);
}
NSString * jsonString =[NSString stringWithFormat:@"{Action:\"GetActList\",PageIndex:\"1\",title:\"登山\",desctination:\"\",startCity:\"深圳\",theme:\"\",startTime:\"\",status:\"\",actType:\"AA\",sort:\"create\"}"];
NSData *data =[jsonString dataUsingEncoding:NSUTF8StringEncoding];
[self.outSocket writeData:data withTimeout:-1 tag:0];
[self.outSocket readDataToData:[AsyncSocket CRLFData] withTimeout:-1 tag:0];
-(void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{
NSLog(@"%d",data.length);
NSString * sting =[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",sting);
}
- (void)onSocket:(AsyncSocket *)sock didReadPartialDataOfLength:(NSUInteger)partialLength tag:(long)tag{ NSLog(@"Received bytes: %d",partialLength); }
didReadPartialDataOfLength 这个可以接收到。
didReadData 始终不执行,接收不到数据,看说明,是要读完请求数据到内存才调用,请问,它的读完是怎么来识别呢?