iOS menggunakan GCDAsyncSocket untuk mewujudkan sambungan yang panjang untuk menghantar mesej Mengapakah GCDAsyncSocket perlu dimulakan sekali sebelum menghantar mesej?
Ini ialah kaedah butang untuk menghantar mesej Apabila saya memulakan GCDAsyncSocket dan menulis ke viewDidLoad, pelayan tidak boleh menerima mesej
-(kosong)semuaPhotoAction:(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];
}
Adalah disyorkan untuk melihat lebih banyak contoh rasmi.
Kejayaan dikembalikan dengan memanggil
connectToHost
tidak bermakna anda disambungkan, ia hanya bermakna tiada yang salah dengan hos dan port yang anda masukkan Ia mempunyai kaedah panggil balik untuk sambungan yang berjaya, dan panggil writeData selepas kaedah itu . Untuk mengekalkan sambungan yang panjang, baca mesti dipanggil selepas setiap tulis/terima untuk memastikan soket mendengar.