iOS 使用GCDAsyncSocket建立長連線傳送訊息,為什麼沒發(fā)送訊息就要初始化GCDAsyncSocket一次,是不是我的程式碼哪裡寫錯了
這個是發(fā)送訊息按鈕方法,當我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(@"%@", @"連接服務(wù)器失敗");
}
NSString *sendMessage = @"25";
[asyncsocket writeData:[sendMessage dataUsingEncoding:NSUTF8StringEncoding] withTimeout:-1 tag:1];
}
走同樣的路,發(fā)現(xiàn)不同的人生
建議多看看官方的例子。
呼叫 connectToHost
回傳的成功並不表示你連上了,只是說你輸入的host和port沒啥問題,它有個連接成功的回調(diào)方法,在那個方法之後再呼叫 writeData 。要保持長連結(jié)必須在每次 write/receive 後呼叫 read,以保持socket持續(xù)監(jiān)聽。