Этот вопрос относится к проекту iOS, написанному на ObjectiveC, в котором используются некоторые заголовки C ++.
Я использую этот метод для отправки сообщений на сервер с использованием 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-framework (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];
Это определения двух методов, используемых для кодирования и декодирования
unsigned int decode(const char* string, unsigned int len, char* out);
unsigned int encode(const char* string, unsigned int len, char* out);
На самом деле я ищу способ отправить символ * (результат метода кодирования) на сервер, но я не уверен насчет преобразования "NSString * в char * в uint8_t * в NSString *. 1015 *
Как лучше всего справиться с такого рода конверсиями, чтобы достичь того же результата с помощью этой платформы?
Заранее спасибо за ответы и потраченное время!