2010-11-22 21 views
2

Je dois implémenter une application iOS, qui se connecte à un serveur Web et reçoit des événements de celle-ci, c'est-à-dire une interrogation longue du serveur. Je prévois d'utiliser la bibliothèque AsyncSocket.Comment utiliser les sockets dans iOS?

Mon idée est d'ouvrir un socket sur l'iPhone, de l'envoyer au serveur la première fois que je me connecte, puis d'écouter indéfiniment le socket et de mettre à jour l'interface graphique en fonction des événements que le serveur lui envoie. Voici mes questions:

  1. Est-ce une approche correcte et si non - comment cela devrait-il être fait?
  2. Est-ce que le serveur peut envoyer des données à la socket que je lui donne (tant que le socket est ouvert), si l'iPhone et le serveur sont sur des réseaux différents et que l'iPhone est sur un réseau local?

Répondre

1
  1. Oui. 2. Oui.

Sur le fone, vous obtiendrez des informations arrivant dans la fone probablement quelque chose comme ceci:

-(void)onSocket:(AsyncSocket *)sock didReadData:(NSData*)data withTag:(long)tag 
    { 
    [data getBytes:&getMe length:sizeof(CommProt)]; 
    // do not forget to roll in the next read... 
    [sock readDataToLength:sizeof(CommProt) withTimeout:-1 tag:0]; 
    // now parse that command 
    } 

et sur le fone vous envoyer des informations de la fone très probablement quelque chose comme ça (il y a deux approches différentes) ...

-(void) mySendStringData:(NSString *)sss 
    { 
    // so easy, thank goodness for AysncSocket 
    NSData* data = [sss dataUsingEncoding: NSASCIIStringEncoding]; 

    [theSocket writeData:data withTimeout:0.5 tag:0]; 
    [theSocket writeData:quickCR withTimeout:0.5 tag:0]; 
    // (in the protocol at hand, we are using a delimiter on the end (a CR)) 
    } 

Remarque. Il est possible ce post, je fait pourrait vous être utile: il donne la verité sur les protocoles dans iOS:

Tablet(iPad/Android)-Server Communication Protocol

J'espère que ça aide.

On peut imaginer ce qui pourrait aider iPad and Arduino Integration et cette connaissance secrète pourrait aider Client/Server GKSessions Vive

+0

merci énorme! :) Je vais essayer :), et si je suis coincé sur quelque chose, je vais demander à nouveau, si je peux :) – cpprulez