0

この質問は、C++ヘッダーを使用するObjectiveCで書かれたiOSプロジェクトに関連しています。ソケットからcocoaasyncsocketsへの切り替え(文字列変換に関する質問)

私はこのメソッドを使用して、TCPを使用してサーバーにメッセージを送信しています。ご覧のとおり、特定のプロトコルに準拠するように文字列を変更するC++メソッドが呼び出されています。この文字列はストリームに書き込まれます。

-(void) writeToServer:(NSString*) str 
{ 
    int len = [str length]; 
    const char* in_ = new char[len]; 
    char* out_ = new char[len]; 

    in_ = [str UTF8String]; 

    len = binary8BitStringTo7BitStringEncoding::encode(in_, len, out_); 

    uint8_t* test = new uint8_t[len]; 

    for (int i=0; i<len; ++i) { 
     test[i] = out_[i]; 
    } 

    [outputStream write:test maxLength:len]; 
} 

は私の代わりに直接ストリームを扱うのcocoaasyncsocket・フレームワーク(http://code.google.com/p/cocoaasyncsocket/)を使用することを計画しています。問題は、このフレームワークを使用するときに同じ機能を実現するにはどうすればいいですか?

これは、このフレームワークを使用してサーバへの書き込みは次のようになります。これらは、私が探しているエンコードとデコード実際に

unsigned int decode(const char* string, unsigned int len, char* out); 
unsigned int encode(const char* string, unsigned int len, char* out); 

ために使用される2つのメソッドの定義である

NSString *warningMsg = @"Are you still there?\r\n"; 
NSData *warningData = [warningMsg dataUsingEncoding:NSUTF8StringEncoding]; 
[sock writeData:warningData withTimeout:-1 tag:WARNING_MSG]; 

char *(encodeメソッドの結果)をサーバーに送信する方法については、私は全体的に "NSString * to char * to NSString *変換へのuint8_t *"を確信しています。

このフレームワークを使用して同じ結果を達成するために、この種の変換を処理する最良の方法は何ですか?

ご回答いただきありがとうございます!

答えて

0

が、私はそれを考え出し、同等の方法は次のようになります。

-(void) writeToServer:(NSString*) str{ 

    int len = [str length]; 
    const char* in_ = new char[len]; 
    char* out_ = new char[len]; 

    in_ = [str cStringUsingEncoding:NSASCIIStringEncoding]; 

    len = binary8BitStringTo7BitStringEncoding::encode(in_, len, out_); 

    [socket writeData:[NSData dataWithBytes:out_ length:len] withTimeout:-1 tag:1]; 

} 
関連する問題