objective-c - iOS 使用GCDAsyncSocket建立长连接发送消息

浏览:38日期:2023-11-24

问题描述

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];

}

问题解答

回答1:

建议多看看官方的例子。

调用 connectToHost 返回的成功并不表示你连上了,只是说你输入的host和port没啥问题,它有个连接成功的回调方法,在那个方法之后再调用 writeData 。要保持长链接必须在每次 write/receive 后调用 read,以保持socket持续监听。

相关文章: