我正在使用套接字并尝试简单地将字符串写入套接字。我找到了一些关于如何执行此操作的示例,例如以下示例(oStream 是一个NSOutputStream
)。这一切都在NSStreamEventHasSpaceAvailable
.
uint8_t buffer[11] = "I send this";
int len;
len = [oStream write:buffer maxLength:sizeof(buffer)];
这很好用。所以我尝试通过获取 NSString 的字节来修改它以使其可定制。
int len;
NSString* strId;
strId = @"string will be customized with several lines of code here";
uint8_t buffer[[strId lengthOfBytesUsingEncoding:NSASCIIStringEncoding]];
[strId getBytes:buffer maxLength:sizeof(buffer) usedLength:NULL encoding:NSASCIIStringEncoding options:NULL range:NSRangeFromString(strId) remainingRange:NULL];
len = [oStream write:buffer maxLength:sizeof(buffer)];
这根本行不通。它将完整的乱码写入缓冲区(可能是字节),并且我收到一条警告 getBytes 行“传递 getBytes 的参数 5 从指针中生成整数而不进行强制转换”。
抱歉,如果以前有人问过这个问题,但无法通过搜索找到答案,而且看起来问题应该很容易解决。谢谢!
编辑: 我发现了一些似乎可行的东西,但我不确定它是否是这样的正确编程。请看下面的答案。在这种情况下使用该危险代码吗?