Как запрограммировать протокол связи с «сокетами iphone»? - PullRequest
0 голосов
/ 26 августа 2011

Я запрограммировал клиент-серверное приложение для Android, и я делаю то же самое для Iphone.Дело в том, что для процесса связи с сервером Java и клиентом Android я запрограммировал что-то вроде этого (в псевдо ...):

data = read();
if ( data.compareTo("Something1") == 0) then
     write("Something2");
     data = read();
     if ( data.compareTo("Something3") == 0) then
          //End communitacion
     endif
endif

Теперь моя проблема в том, что с "iphone Sockets "Я не знаю, как это сделать.Я использую библиотеку AsyncScoket, и с этой библиотекой чтение не блокируется (что сложно для меня), и оно использует обратные вызовы, которые я не знаю, как правильно использовать.

Я думаю,что когда чтение завершено, я должен проверить в правильном обратном вызове, равны ли отправленные данные «Something1» или «Something2» ... Но, первая маленькая проблема заключается в том, что у него нет порядка.

Я должен сказать, что у меня нет времени, чтобы изменить протокол.

Если бы кто-то мог руководить мной, я был бы очень благодарен.Или любой пример кода, где сетевое взаимодействие осуществляется с библиотекой AsyncSocket.

Спасибо!

1 Ответ

1 голос
/ 06 ноября 2011

Я недавно начал использовать asyncsocket вместе с TCP-сервером Java.Возможно, этот код может помочь?

Чтобы записать в сокет, вам необходимо вызвать следующий метод из объекта asyncsocket

-(void)writeData:withTimeout:tag:;

Данные здесь должны быть объектом NSData.Вы можете легко преобразовать строки в NSData, выполнив

[someStringObject dataUsingEncoding:NSUTF8Encoding];

Для чтения из сокета просто вызовите этот метод

-(void)readDataWithTimeOut:tag:;

pass -1 для тайм-аута, если вам не нужен тайм-аут.

И это все.Чтение / запись с использованием cocoaasyncsocket намного проще, чем работа с сокетами в Java, где вам нужны datainputstream и dataoutputstream и другие подобные вещи.

Важные методы делегата:

-(void)onSocket:didReadData:withTag: gets called whenever the socket reads some data.

Пример этого делегата: ..

-(void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{

      NSString *string = [[NSString alloc] initWithBytes:[data bytes] 
                                                  length:[data length]
                                                encoding:NSUTF8StringEncoding];
     //Do what ever comparison you'd like here.

}

Если есть что-то, чего вы не понимаете, дайте мне знать иЯ постараюсь ответить на ваши сомнения.

...