Maison > Questions et réponses > le corps du texte
iOS utilise GCDAsyncSocket pour établir une longue connexion afin d'envoyer des messages. Pourquoi GCDAsyncSocket doit-il être initialisé une fois avant d'envoyer un message ?
Il s'agit de la méthode du bouton d'envoi de message. Lorsque j'initialise GCDAsyncSocket et que j'écris sur viewDidLoad, le serveur ne peut pas recevoir le message
-(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];
}
给我你的怀抱2017-05-02 09:32:53
Il est recommandé de regarder des exemples plus officiels.
Le succès renvoyé en appelant connectToHost
ne signifie pas que vous êtes connecté, cela signifie simplement qu'il n'y a rien de mal avec l'hôte et le port que vous avez entrés. Il a une méthode de rappel pour une connexion réussie, et appelez writeData après cette méthode. . Pour maintenir une longue connexion, read doit être appelé après chaque écriture/réception pour que le socket continue d'écouter.