目前我正在创建一个从输入流接收数据的应用程序。该数据被设置为NSString
指针输出。目前,我只能在常规NSTextField
窗口中显示输出。我当前的代码只允许在事件 hasBytesAvailable 为 true 时显示这些字符串。每次 hasBytesAvailable 能够从流中返回数据时,它都会NSTextField
完全替换。我似乎无法NSTextView
正确使用该对象。我想设置在NSTextView
执行 hasBytesAvailable 事件返回信息时显示字符串数据。我希望能够向上滚动并查看正在发送的所有信息。
我能想到的与此相关的最佳示例是聊天服务器/客户端,其中我的应用程序将是接受数据的客户端,但将其全部保存在NSTextView
窗口中。
谢谢
- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent {
switch (streamEvent) {
case NSStreamEventOpenCompleted:
NSLog(@"Stream opened");
break;
case NSStreamEventHasSpaceAvailable:
NSLog(@"Has space");
break;
case NSStreamEventHasBytesAvailable:
if (theStream == inputStream) {
uint8_t buffer[10000];
long len;
while ([inputStream hasBytesAvailable]) {
len = [inputStream read:buffer maxLength:sizeof(buffer)];
if (len > 0) {
NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding];
NSLog(@"Has Bytes");
if (nil != output) {
NSLog(@"%@", output);
[window setString:output];
}
}
}
}
break;
case NSStreamEventEndEncountered:
NSLog(@"Error.");
break;
}
}