Есть ли механизм в Objective-C, подобный Netty в Java, для переадресации протоколов TCP к UDT в транспортном слое

Есть ли механизм в Objective-C, подобный Netty в Java, для переадресации протоколов TCP к UDT в Transport Layer.

Теперь я хочу реализовать HTTP-запрос и ответ (выполняется по TCP по умолчанию) для запуска UDT из моего приложения.

  1. Это возможно?

  2. Есть ли встроенный механизм в iOS для этого?

Если вы хотите использовать HTTP, я предлагаю класс NSURLConnection. Например, чтобы использовать запрос POST с заголовками, выполните следующие действия:

int kTimeoutInterval = 30; NSString *post = @"Something to post"; NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding]; NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]]; NSString *link = @"http://some_link"; link = [link stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:link] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:kTimeoutInterval]; [request setURL:[NSURL URLWithString:link]]; [request setHTTPMethod:@"POST"]; // set some header entries, for example: //[request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; //[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; [request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[postLength length]] forHTTPHeaderField:@"Content-Length"]; [request setHTTPBody:postData]; NSError *error; NSURLResponse* response=nil; NSData* data=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

Теперь будьте осторожны, это синхронный запрос, и он заблокирует поток, на котором он выполняется, для времени выполнения или времени таймаута, определенного в константе kTimeoutInterval. Это можно изменить в асинхронном режиме с помощью:

 [NSURLConnection connectionWithRequest... 

в этом случае ответ будет получен через метод делегирования. Поэтому, чтобы решить, какой подход лучше всего подходит для вас, перейдите к документации NSURLConnection. Надеюсь это поможет…

Нет ничего такого же удобного, как Netty. Однако вы можете взглянуть на руководство по программированию CFNetwork, в частности разделы « Общение с HTTP-серверами» . Это описывает методы CFHTTPMessage, которые могут использоваться для создания и сериализации, HTTP-запросов и декодирования ответов. Когда они сериализуются и декодируются из буферов, вы можете передавать сообщения, как вам нравится. Если у вас уже есть реализация UDT, это должно быть достаточно простым.

Обратите внимание, что вы отвечаете за кодирование / декодирование тела HTTP соответствующим образом, но если ваш протокол веб-службы довольно прост, это может быть только случай сериализации / десериализации строк.

Interesting Posts

Xcode 7.x сбой при редактировании раскадровки

Отклонить уже поставленную UILocalNotification?

как заставить UIKeyInput делать повторные вызовы deleteBackwards

Может ли метод экземпляра класса вызвать другой поток использовать свойства класса?

Настраивать индивидуальные тестовые примеры XCTest в Xcode 5 на конкретное устройство iOS для универсального приложения?

Недопустимый токен в начале выражения препроцессора в CoreFoundation

Draggable UIView прекращает публикацию touchhesBegan после добавления в UIScrollView

Кордова видео / аудио не будет воспроизводиться из cdvfile: // URL-адреса после обновления до 3.3.0

Какой алгоритм кеширования использует NSURLCache?

Ошибка lldb: использование необъявленного идентификатора с локальной переменной

Какое лучшее место для вызова веб-сервисов в приложении iOS с архитектурой MVVMC?

CSS для чисел внутри кругов, позиция отключена для iOS

Почему я не могу перетащить UIBarButtonItem на панель навигации?

Вызов NSURLConnection внутри dispatch_async и чтение didReceiveResponse в mainRunLoop в разработке iPhone

ld: библиотека не найдена для -lgcc_s.10.5 Xcode

Давайте будем гением компьютера.