objective-c - iOS 使用GCDAsyncSocket建立长连接发送消息
本文介绍了objective-c - iOS 使用GCDAsyncSocket建立长连接发送消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
iOS 使用GCDAsyncSocket建立长连接发送消息,为什么没发送一条消息就要初始化GCDAsyncSocket一次,是不是我的代码哪里写错了
这个是发送消息按钮方法,当我GCDAsyncSocket初始化写到viewDidLoad,就服务器就接受不到消息
-(void)allPhotoAction:(UIButton *)btn{
//建立连接
NSString *host = @"192.168.0.199";
int port = 54111;
asyncsocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
asyncsocket.delegate = self;
NSError *error = nil;
if (![asyncsocket connectToHost:host onPort:port error:&error]) {
//该方法异步
GFFLog(@"%@", @"连接服务器失败");
}
NSString *sendMessage = @"25";
[asyncsocket writeData:[sendMessage dataUsingEncoding:NSUTF8StringEncoding] withTimeout:-1 tag:1];
}
解决方案
建议多看看官方的例子。
调用 connectToHost
返回的成功并不表示你连上了,只是说你输入的host和port没啥问题,它有个连接成功的回调方法,在那个方法之后再调用 writeData 。要保持长链接必须在每次 write/receive 后调用 read,以保持socket持续监听。
这篇关于objective-c - iOS 使用GCDAsyncSocket建立长连接发送消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文