搜尋

首頁  >  問答  >  主體

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

}

怪我咯怪我咯2767 天前748

全部回覆(1)我來回復

  • 给我你的怀抱

    给我你的怀抱2017-05-02 09:32:53

    建議多看看官方的例子。

    呼叫 connectToHost 回傳的成功並不表示你連上了,只是說你輸入的host和port沒啥問題,它有個連接成功的回調方法,在那個方法之後再呼叫 writeData 。要保持長連結必須在每次 write/receive 後呼叫 read,以保持socket持續監聽。

    回覆
    0
  • 取消回覆