Как использовать сокеты в iOS? - PullRequest
2 голосов
/ 22 ноября 2010

Мне нужно реализовать приложение для iOS, которое подключается к веб-серверу и получает от него события, то есть длительный опрос сервера. Я планирую использовать библиотеку AsyncSocket.

Моя идея состоит в том, чтобы открыть сокет на iPhone, отправить его на сервер при первом подключении к нему, а затем бесконечно прослушивать сокет и обновлять графический интерфейс в соответствии с событиями, которые сервер отправляет ему. Вот мои вопросы:

  1. Это правильный подход, а если нет - как это сделать?
  2. Может ли сервер отправлять данные в гнездо, которое я ему даю (до тех пор, пока сокет открыт), если iPhone и сервер находятся в разных сетях, а iPhone находится в локальной сети?

1 Ответ

1 голос
/ 22 ноября 2010
  1. Да.2. Да.

На телефоне вы получите информацию, поступающую на телефон, вероятно, что-то вроде этого:

-(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
    }

, а на телефоне вы отправите информацию с телефона.вполне вероятно, что-то вроде этого (есть несколько разных подходов) ...

-(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))
    }

Примечание .Возможно, этот пост, который я сделал, может быть полезен для вас: в нем дано краткое описание протоколов в iOS:

Планшет (iPad / Android) -Сервер протокола связи

Я надеюсь, что это поможет.

Возможно, это могло бы помочь Интеграция iPad и Arduino , и эти секретные знания могут помочь Клиент / сервер GKSessions Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...