貌似这个和你的情况差不多
http://stackoverflow.com/questions/8368490/gcdasynsocketdelegate-didreaddata-method-is-not-called-using-gcdasynsocket
http://stackoverflow.com/questions/8368490/gcdasynsocketdelegate-didreaddata-method-is-not-called-using-gcdasynsocket
#import "ViewController.h"
#import "GCDAsyncSocket.h"@interface ViewController ()<GCDAsyncSocketDelegate>@end@implementation ViewController- (void)viewDidLoad {
[super viewDidLoad];
host = @"192.168.0.88";
port = 8888;
}
//链接服务器
//链接socket服务器按钮单击事件
- (IBAction)btnConnectSocket_click:(id)sender
{
_lblSocketStatus.text = host;
socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
socket.delegate = self;
NSError *err = nil;
BOOL connState=[socket connectToHost:host onPort:port error:&err];
if(!connState)
{ _lblSocketStatus.text = [_lblSocketStatus.text stringByAppendingString:err.description ];
NSLog(@"无法连接");
}
}
//判断是否连接成功
- (void)socket:(GCDAsyncSocket *)sender didConnectToHost:(NSString *)host port:(UInt16)port
{
NSLog(@"已连接到%@服务器",host);
[socket readDataWithTimeout:-1 tag:0];
}//发送信息
//发送信息单击事件
- (IBAction)btnSendMsg_Click:(id)sender
{
_txtQQ.text = [_txtQQ.text stringByAppendingString:@"\n"];
[socket writeData:[_txtQQ.text dataUsingEncoding:NSUTF8StringEncoding] withTimeout:-1 tag:0];
NSLog(@"%@",_txtQQ.text);
[socket readDataWithTimeout:-1 tag:0];
}//接收信息
//读取服务器获取的数据
-(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
{
//将UTF8转成GBK编码
NSStringEncoding gbkEncoding =CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
//将data转换成字符串
NSString *recvMessage = [[NSString alloc] initWithData:data encoding:gbkEncoding];
NSLog(@"%@",recvMessage);
if (recvMessage == NULL)
{
NSLog(@"数据为空");
}
[socket readDataWithTimeout:-1 tag:0];
}麻烦大神帮看看了,谢谢~