この質問は、いくつかの C++ ヘッダーを利用する ObjectiveC で書かれた iOS プロジェクトに関連しています。
このメソッドを使用して、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/) を使用する予定です。質問: このフレームワークを使用して同じ機能を実現するにはどうすればよいですか?
このフレームワークを使用してサーバーに書き込むと、次のようになります。
NSString *warningMsg = @"Are you still there?\r\n";
NSData *warningData = [warningMsg dataUsingEncoding:NSUTF8StringEncoding];
[sock writeData:warningData withTimeout:-1 tag:WARNING_MSG];
これらは、エンコードとデコードに使用される 2 つの方法の定義です。
unsigned int decode(const char* string, unsigned int len, char* out);
unsigned int encode(const char* string, unsigned int len, char* out);
実際、char* (encode メソッドの結果) をサーバーに送信する方法を探していますが、「NSString* から char* へ、uint8_t* から NSString* への変換」全体については不明です。
このフレームワークを使用して同じ結果を得るために、この種の変換を処理する最良の方法は何ですか?
回答と時間を割いていただきありがとうございます。