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持續監聽。