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

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

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

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

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

2 Solutions collect form web for “Есть ли механизм в Objective-C, подобный Netty в Java, для переадресации протоколов TCP к UDT в транспортном слое”

Если вы хотите использовать 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

Новичок: ошибка при регистрации при установке на устройство iOS

Поддерживает ли iOS5 как GL_STENCIL_INDEX, так и GL_STENCIL_INDEX8?

Публикация App Store iOS под другой учетной записью

Использование структуры ускорения в Swift

Как сохранить NSUserDefaults на applicationWillTerminate

Как рассчитать размер iOS 11 в другой ориентации?

Что означает kExtAudioFileError_AsyncWriteTooLarge (-66569), возвращаемое ExtAudioFileWriteAsync?

Импорт XCTest в динамическую структуру

Swift: ошибка сегментации 11 при импорте файлов в заголовок заголовка

Принудительная цифровая клавиатура iOS с пользовательским / валютным шаблоном

табличный вид в popover не прокручивается

Защита учетной записи пользователя Firebase с помощью firebaseSimpleLogin

Удалите неиспользуемые заставки и значки из приложения PhoneGap

iOS Ожидание запуска менеджера местоположений

Как создать аутентификацию REST для мобильных приложений iOS и Android

PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.