【发布时间】:2023-03-31 06:35:01
【问题描述】:
在 Ray Wenderlich tutorial on sockets 中,为了从 Objective-C 中的输入流中读取字节,我们做了
uint8_t buffer[1024];
int len;
while ([inputStream hasBytesAvailable]) {
len = [inputStream read:buffer maxLength:sizeof(buffer)];
if (len > 0) {
NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding];
if (nil != output) {
NSLog(@"server said: %@", output);
}
在 Swift 中,我尝试了以下方法,但没有成功
if (stream == inputStream) {
// var buffer = Array<UInt8>(count: 1024, repeatedValue: 0)
var buffer : UnsafeMutablePointer<UInt8>
var len : Bool
while (inputStream?.hasBytesAvailable == true) {
len = inputStream?.getBuffer(buffer, length: sizeofValue(buffer))
if (len) {
var output = String(NSString(bytes: buffer, length: sizeofValue(buffer), encoding: NSASCIIStringEncoding))
}
}
}
【问题讨论】:
-
Swift 代码中没有分配缓冲区。
-
知道如何读取输入流吗?
标签: swift