トランスポート層でTCPをUDTプロトコルに迂回させるための、JavaのNettyに似たObjective-Cのメカニズムはありますか。
ここで、アプリケーションから UDT を介して実行するために、HTTP 要求と応答 (デフォルトで TCP を介して実行) を実装したいと考えています。
これは可能ですか?
このための iOS の組み込みメカニズムはありますか?
トランスポート層でTCPをUDTプロトコルに迂回させるための、JavaのNettyに似たObjective-Cのメカニズムはありますか。
ここで、アプリケーションから UDT を介して実行するために、HTTP 要求と応答 (デフォルトで TCP を介して実行) を実装したいと考えています。
これは可能ですか?
このための 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 サーバーとの通信に関するセクションを参照することをお勧めします。これは、HTTP 要求の作成、シリアル化、および応答のデコードに使用できる CFHTTPMessage メソッドについて説明しています。それらがバッファにシリアル化され、バッファからデコードされると、好きなようにメッセージを自由に送信できます。すでに UDT を実装している場合は、かなり簡単です。
HTTP 本文を適切にエンコード/デコードする責任があることに注意してください。ただし、Web サービス プロトコルがかなり単純な場合は、文字列のシリアル化/逆シリアル化の場合のみになる可能性があります。